我试图创建一个程序,它接收来自.txt或类似文件的数据并要求用户输入要搜索的单词。输出结果应该显示关键字与原来在它前面的两个单词以及它后面的单词。 (EX:关键字:男孩会输出“,男孩跑了”)我可以找到该文件中的所有关键字与equal_range()函数的实例,但我不知道如何遍历地图中的数据访问其他文字的上下文。这里是我的代码到目前为止:访问mulimap中的元素
typedef multimap<string, int> templateMap;
templateMap wordMap;
typedef pair<templateMap::iterator, templateMap::iterator> searchTemplate;
searchTemplate search;
typedef pair<templateMap::const_iterator, templateMap::const_iterator> innerIteratorTemplate;
multimap<string, int>::iterator tempMap;
string tempWord;
string keyword;
// omitted code
for (size_t i = 0; !inData.eof(); i++)
{
inData >> tempWord;
wordMap.insert(pair<string, int>(tempWord, i));
}
search = wordMap.equal_range(keyword);
for (multimap<string, int>::iterator itr = search.first; itr != search.second; ++itr)
{
cout << "The keyword " << keyword << " is found at location " << itr->second << endl;
tempMap = itr;
itr->second = itr->second - 2;
cout << itr->first << endl;
}
我知道在for循环底部的代码是错误的,但它是用于测试目的。
是as_range是否需要从算法,数学,向量和iostream以外的其他东西中加入?我的编译器告诉我这是未定义的,我无法在任何地方找到明确的答案 – littlenv