Ich erstelle also eine Klasse, die eine Adjazenzliste implementiert. Derzeit in meiner Klasse Definition initialisiert ich zwei Vektoren:Einfügen von Elementen in 2D-Vektor
vector<vector<int>> adjList;
vector<int> neighbors;
und ich erklärte zwei Funktionen, die ich plane, zu verwenden, um es zu machen:
bool constructAdjList();
bool insertIntoAdjList(int, int);
Es wird schwierig Einwickeln meinen Kopf um 2D-Vektoren. Ich verstehe, dass es im Wesentlichen ein Vektor von Vektoren ist, aber ich bin verwirrt darüber, wie man einen neuen Wert in einen der "Subvektoren" einfügt. Zum Beispiel, kann ich eine Adjazenzliste in createAdjList erstellen, die mit der folgenden Schleife leer ist:
for (int i = 0; i < numOfValues; i++){
neighbors.push_back(0);
adjList.push_back(neighbors);
neighbors.clear();
}
Aber wie kann ich sagen, push_back den Wert 5 bis 4. Vektor in adjList, die dargestellt werden würden meine insertIntoAdjList Funktion als
insertIntoAdjList(4, 5);
ich weiß, dass ich einen bestimmten Wert in einem Vektor 2D zugreifen kann, indem er sagte adjList [4] [1], aber wie kann ich eine auf ihn schieben?
Danke!
Ich verstehe es nicht, kannst du das nicht tun: 'adjList [4] [1] = 987'? – Kam
Das funktioniert, wenn ich bereits einen Wert in der [4] [1] Position habe, aber wenn ich eigentlich einen Wert auf das Ende von Vektor 4 schieben möchte, muss ich irgendwie push_back? –
Ich denke, eine 'std :: unordered_map>' kann Ihnen besser dienen. nur meine Meinung. –
WhozCraig