用 char*作為std::map中的key
阿新 • • 發佈:2018-12-24
宣告map時需要新增一個cmp比較函式,不然map在比較時,使用char *的指標進行比較,而不是比較char字串。
#include <cstring> struct cmp_str { bool operator()(char const *a, char const *b) { return std::strcmp(a, b) < 0; } }; int main ( int argc, char ** argv ) { std::map<const char*, int, cmp_str> map; map["aa"] = 1; map["ca"] = 2; map["ea"] = 3; map["ba"] = 4; map["ba"] = 5; map["bb"] = 6; map["ba"] = 7; std::map<const char*, int, cmp_str>::iterator it = map.begin(); for (; it != map.end(); it++ ) { std::cout << (*it).first << ": " << (*it).second << std::endl; } return 0; }
參考:
http://stackoverflow.com/questions/4157687/using-char-as-a-key-in-stdmap