我試圖創建一個程序,它接收來自.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