【发布时间】:2013-07-19 08:16:03
【问题描述】:
我正在尝试将信息保存在 std::map 中。但我对find 有意见:
typedef map<string, string, equal_to<string>> MAP_STRING2STRING;
....
MAP_STRING2STRING map;
MAP_STRING2STRING::const_iterator iter;
当我尝试查找 key 时,我收到以下错误:
iter = map.find(key);
我做错了什么?
仅当我在map 中有内容时才会出现此错误。
【问题讨论】:
-
equal_to不是正确的比较方式。您需要严格的弱排序(小于或大于类型比较)。 -
当key为
std::string时,你通常根本不需要传递第三个模板参数给std::map;默认为std::less<std::string>,除非您需要特殊订购,否则这很好。 -
DONT_USE_ALL_UPPERCASE - MACROS 除外。谢谢。 :-)
标签: c++ visual-c++ stl