2016-05-14 6 views
1

ich einige Code sorta wie dieses:Kann nicht integer in multidimensionalen Vektor einfügen

vector< vector<int> > vec; // multidimensional vector 
while (condition) 
{ 
    vec.push_back(vector<int>()); // add subvectors to vec 
    for (int i = 0; i < number; i++) 
    { 
     vec[vec.size()].push_back(i); // add integers to those subvectors (the problem) 
    } 
} 

ich vec[vec.size()] bin mit dem letzten Element in meinem Hauptvektor bekommen eine ganze Zahl in sie einzufügen. Ich verstehe nicht, warum das so ist, aber ich bekomme alle möglichen Fehler von diesem Code. Was mache ich falsch?

+0

'vec [vecsize()]' = Rezept für undefiniertes Verhalten. Und Fyi, es wäre wesentlich sinnvoller, einen Vektor zu füllen, * dann * als letzte * vor der nächsten Iteration der while-Schleife in den äußeren Vektor zu schieben. – WhozCraig

Antwort

0

Wie Sie wissen, dass die Indizierung in C/C++ aus [0, Größe-1] also ganze Zahlen in den letzten Vektor in Ihrem Vektor einzufügen von Vektoren den folgenden Code

vec[vec.size()-1].push_back(i); 
1

Eine üblichere Weise verwenden folgt, ist, es zu tun, wie:

vector< vector<int> > vec; // multidimensional vector 
vector<int> a; 
// push back elements to a 
vec.push_back(a); 
0

da niemand es erwähnen, die Sie tun können:

vec[x][y] = 5; 

es funktioniert wie ein ich erwarte es.

Aber ich persönlich fand "Eissa N." Lösung besser.

+1

Um nur zu kommentieren, dass 'vec [x] [y] = 5;' erfordert Größe Vektor zuerst in beiden Dimensionen. –

+0

Wenn ich die Dimensionen kenne, würde ich mit Ihrer Lösung + 'vec.reserve()' gehen – Nick

Verwandte Themen