我希望在性能情况下使用 C 字符串而不是 std::string
。我有以下代码:
std::map<const char*, int> myMap;
.
.
.
myMap.insert(std::pair<const char*, int>(str.c_str(), myint));
std::cout << myMap.count(str.c_str()) << std::endl;
奇怪的是,我刚刚输入的值对于 count()
返回 0?
最佳答案
默认情况下,std::map
使用 std::less
比较键(这与 <
相同,真的,除了它保证也适用于不相关的指针)。这意味着它只是进行指针比较,绝对不是您想要的。
只需使用 C++11 字符串类型 ( std::string
) 而不是用于以 nul 结尾的字符串 ( const char*
) 的旧类型,就可以了。
关于c++ - std::map.count 使用 c 字符串不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24698121/