私は、.txtまたは類似のファイルからデータを取り込み、検索する単語をユーザに尋ねるプログラムを作成しようとしています。出力には、元々はその前にあった2つの単語だけでなくその背後にもキーワードが表示されます。 (EX:keyword:boyは "and boy was run away"と出力しました)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ループ内のコードが間違っていることを承知していますが、それはテスト目的のためでした。
ですアルゴリズム、数学、ベクトル、およびiostream以外の何かからインクルードする必要があるas_rangeの何か?私のコンパイラはそれが未定義であると私に伝え、私はどこでも明確な答えを見つけることができません – littlenv