如何搜索所有地图键c ++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何搜索所有地图键c ++相关的知识,希望对你有一定的参考价值。
我想要实现的是一个基本的拼写检查器,它读取输入文本文件并将这些单词与一个小字典进行比较。如果单词不在字典中,则假定拼写错误,然后提示用户正确拼写单词。这个正确拼写的单词与拼写错误的对应词一起存储在地图中。到目前为止,我已经能够做到这一切。我无法弄清楚的是如何遍历整个地图以检查该密钥(拼写错误的单词)是否已经存在,而不是每次都询问用户如果在地图的迭代中找不到拼写它?下面是我到目前为止的代码,它检查单词是否在字典中,询问用户如何拼写它,并将其添加到地图中。
std::map<std::string,std::string>::iterator p = m_Replacements.begin();
bool isIn = m_Dictionary.find(oneWord) != m_Dictionary.end();
std::map<std::string,std::string>::iterator found = m_Replacements.find(oneWord);
if(found==m_Replacements.end())
{
if( isIn == false)
{
osInputPrompt<<"How do you correctly spell " + oneWord + "
";
isInputPrompt >> correctSpell;
m_Replacements.insert(make_pair(textWord,correctSpell));
osOutput<<correctSpell + " ";
}
else
{
osOutput<<oneWord + " ";
}
总而言之,我想在循环中添加另一个循环,检查单词是否在字典中然后检查整个地图以查看拼写错误的单词是否已经存在而不询问“你如何正确拼写... “对于地图循环的每次迭代。仅仅是为了澄清我不是要问如何迭代地图,我已经知道如何做到这一点。提前致谢。
答案
std::map<std::string,std::string>::iterator p;
std::string found;
for(p = m_repl.begin(); p != m_repl.end(); ++p)
{
if(p->second == <what I am looking for>)
{
found = p->second;
break;
}
}
即循环整个字典。更新的c ++版本具有更好的枚举sytaxes - 请参阅How to use range-based for() loop with std::map?
另一答案
陷入了我正在做的事情但我通过添加这样的布尔值来解决这个问题,以避免向用户询问循环的每次迭代
bool mapFound;
for(std::map<std::string,std::string>::iterator it = m_Replacements.begin(); it!= m_Replacements.end(); it++)
{
std::string word = it->first;
if(word == oneWord)
{
mapFound = true;
}
}
以上是关于如何搜索所有地图键c ++的主要内容,如果未能解决你的问题,请参考以下文章
请问如何在windows下把一个文件夹里的所有文件用缩略图的方式显示出来?
iOS,如何使用 GMSCoordinateBounds 显示地图的所有标记?