我的代码有问题。我该如何解决? text param是const string。
'std::pair<const std::basic_string<char>, unsigned int>' is not derived from 'const std::reverse_iterator<_Iterator>'
{ return *__it == _M_value; }
.h文件:
typedef std::map<std::string, uint32_t> MessageDataList;
MessageDataList messages;
.cpp文件:
MessageDataList::const_iterator mit = std::find(messages.begin(), messages.end(), text.c_str());
if (mit == messages.end())
messages.insert(std::make_pair(text.c_str(), 1));
else
{}
答案 0 :(得分:2)
使用std::map
,您应该使用std::map::find
代替std::find
:
MessageDataList::const_iterator mit = messages.find(text);
无关建议,使用C ++ 17 std::as_const
从const引用中自动调用find
,返回const_iterator
并启用auto
推断它:
auto mit = std::as_const(messages).find(text);