Ich versuche, ein Programm zu schreiben, das Liste der Zeichenfolgen als Eingabe nimmt und Hash-Tabelle mit Zeichenfolge-Name und seiner Position erstellt.C++ unordered_map in Vektor einfügen
Beispiel:
Vektorwörter {"first", "second", "third", "her", "second"};
Ausgang:
zuerst 1
zweite 2,5
dritte 3
hervor 4
ich zwei Probleme bin vor bitte unter ihnen im Code Kommentar zu finden.
Bitte sagen Sie mir, was mache ich falsch?
int main()
{
vector<string> words {"first", "second", "third", "forth", "second"};
unordered_map<string, vector<int>> hash_table;
unordered_map<string, vector<int>>::const_iterator hash_it;
int loc = 1;
for(auto n = words.begin(); n != words.end(); ++n){
hash_it = hash_table.find(*n);
if(hash_it == hash_table.end())
hash_table.insert(make_pair(*n, vector<int> (loc)));
else
//hash_it->second.push_back(loc); //Problem 1 - this statement gives error
++loc;
}
for(auto& n:hash_table){
cout<<"Word - "<<n.first<<" Loc -";
vector<int> tmp1 = n.second;
for(auto j = tmp1.begin(); j != tmp1.end(); ++j)
cout<<" "<<*j;
cout<<endl;
}
}
Problem 2 - Lage sind Werte von 0
Ausgabe von Programm -
Wort - her Loc - 0
Wort - dritter Loc - 0
Wort - zweite Loc - 0
Wort - erster Loc - 0
Willkommen Überlauf zu stapeln. Bitte nehmen Sie sich die Zeit, [Die Tour] zu lesen (http: // stackoverflow.com/tour) und beziehen Sie sich auf das Material aus der [Hilfe] (http://stackoverflow.com/help/asking) was und wie Sie hier fragen können. –
Welcher Fehler genau wurde Kompilierung fehlgeschlagen? –
@ABusyProgrammer Fehler war - In der Funktion 'int main()': 23:42: Fehler: Übergabe 'const std :: Vektor' als 'dieses' Argument von 'void std :: Vektor <_Tp, _Alloc> :: push_back (const value_type &) [mit _Tp = int; _Alloc = std :: Zuordner ; std :: vector <_Tp, _Alloc> :: value_type = int] 'discards qualifiers [-fpermissive] –
cplusplusnoob