查找并插入-STD :: MAP C

Find and insert - std::map c++

本文关键字:MAP -STD 插入 查找      更新时间:2023-10-16

我的代码有问题。我该如何修复?文本参数是const字符串。

 '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
{}

使用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);
相关文章: