Ich versuche, ein Programm zu erstellen, das Daten aus einer TXT- oder ähnlichen Datei aufnimmt und den Benutzer nach einem Wort fragt, nach dem gesucht werden soll. Die Ausgabe sollte das Schlüsselwort im Zusammenhang mit den 2 Wörtern zeigen, die sich davor und dahinter befanden. (EX: Stichwort: Junge würde ausgeben "und der Junge rannte weg") Ich bin in der Lage, alle Instanzen des Schlüsselworts in der Datei mit der Funktion equal_range() zu finden, aber ich weiß nicht, wie ich die Daten in der Karte durchgehen soll um auf die anderen Wörter für den Kontext zuzugreifen. Hier ist mein Code so weit:Zugriff auf Elemente in einem 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;
}
Ich bin mir bewusst, dass der Code in der for-Schleife am unteren Rand falsch ist, aber es war zu Testzwecken.
Ist as_range etwas, das von etwas anderem als algorithm, math, vector und iostream enthalten sein muss? Mein Compiler sagt mir, dass es nicht definiert ist und ich nirgends eine klare Antwort finden kann – littlenv