查找并插入--std :: map c ++

时间:2018-03-26 09:23:59

标签: c++

我的代码有问题。我该如何解决? 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
{}

1 个答案:

答案 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);