std::map char*做key
【摘要】
用 char*作为std::map中的key
网上的用法:
声明map时需要添加一个cmp比较函数,不然map在比较时,使用char *的指针进行比较,而不是比较char字符串。
[cpp] view plain copy #include <cstring> &nb...
用 char*作为std::map中的key
网上的用法:
声明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;
- }
我用这个时报错了,不加cmp_str时,如果char*内容一样,地址不一样,就会认为key是不一样的,后来把key改为string了,这个问题没有了。
参考:
http://stackoverflow.com/questions/4157687/using-char-as-a-key-in-stdmap
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/79364784
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)