将迭代器值添加到映射为int时出现问题



我认为不能将迭代器转换为int并将其添加到map中。但是我想不出任何可以将值添加到映射中的替代方法,因为我需要将文本文件中的拼写错误单词数与给定字典进行比较。我需要迭代器来跟踪事件的发生。谁能帮我想出另一种写法吗?我知道这有点令人困惑

map<string, int> misspelled;
//Search for matches in random text file
while (getline(random, str)) {
//Search for matched words using regex_search and the rules are already defined 
while (regex_search(str, matches, rules)) {
str = matches.suffix().str(); //Assign string to the matched words
// if words arent in dict - it is misspelled so add it into the map
if (dict.find(str) != dict.end()){
// add to map
misspelled.insert((pair<string, int>(str, dict.find(str)))); //error
}
// print out map
}
}

初始化'pair<std::string,>'(也称为'pair<char,> allocator>, int>')没有匹配的构造函数

这是我得到的错误,我认为这是因为dict.find(str),因为find()方法返回iterator

需要对迭代器解引用才能获得它的值。此外,在c++ 17之后,您可以在if中使用初始化语句,因此您不需要两次调用find():

if (auto item = dict.find(str); item != dict.end()){
misspelled.insert((pair<string, int>(str, *item))); 
}

相关内容

  • 没有找到相关文章

最新更新