Howto Erstellen Karte der Vektor Von Sortierten Daten
Habe ich die folgenden Daten, die als Eingabe (sortiert nach der ersten Spalte):
foo 1 2
foo 3 3
bar 10 11
Möchte ich eine Karte erstellen des Vektors mit der ersten Spalte als Schlüssel der Karte
so dass wir haben:
foo = {1,2,3,3}
bar = {10,11}
Aber warum mein code unten funktioniert nicht wie erwartet?
#include <vector>
#include <map>
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main ( int arg_count, char *arg_vec[] ) {
if (arg_count !=2 ) {
cerr << "expected one argument" << endl;
return EXIT_FAILURE;
}
string line;
ifstream acemblyfile (arg_vec[1]);
map <string, vector<int> > myMapOfVec;
vector <string> myVec;
string KEY = "" ;
if (acemblyfile.is_open())
{
while (getline(acemblyfile,line) )
{
stringstream ss(line);
string KEY_TEMP;
int VAL1;
int VAL2;
ss >> KEY_TEMP >> VAL1 >> VAL2;
MyVec.push_back(VAL1);
MyVec.push_back(VAL2);
if (KEY_TEMP != KEY) {
myMapOfVec[KEY] = MyVec;
KEY = KEY_TEMP;
MyVec.clear();
}
}
acemblyfile.close();
}
else {
cout << "Unable to open file";
}
for( map<string, vector<int> >::iterator iter = myMapOfVec.begin(); iter != myMapOfVec.end(); ++iter ) {
vector <int> tempVec = (*iter).second;
string Key = (*iter).first;
for (unsigned i =0; i<tempVec.size(); i++) {
cout << Key << " " << tempVec[i] << endl;
}
}
return 0;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Mykola sagte, sollten Sie den Vektor in die Karte, anstatt selbst eins. Ich änderte deinen ganzen code, so funktioniert es für mich. Beachten Sie, dass Sie schrieb einige der Variablennamen wird groß - /Kleinschreibung (MyMapOfVec statt myMapOfVec) und dies führte zu compiler-Fehlern.
Auch sicher sein, dass Sie nicht über einen Zeilenumbruch am Ende Ihrer Eingabe-Datei, da diese Folge in der Wiederholung der letzten Zeile.
Für dein Beispiel ergibt die Ausgabe
Nicht hinzufügen, überprüfen KEY_TEMP != SCHLÜSSEL. Da in Ihrem Fall sind Sie gleich wie foo geht zwei mal nacheinander. Nur
Einige Grundlagen über die Karten und Vektoren -
http://rowsandcolumns.blogspot.com/2010/10/c-maps-and-vectors.html