PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vector im constructor initialisieren



dml
25-11-2010, 13:49
Hi!
Ich habe mal wieder ein kleines Problem einen 3 dimensionalen vector im Konstructor zu initialisieren bei dem ich bitte Eure Hilfe bräuchte.

Normaler weise wird ein vector ja mit:

vector<vector<vector<string> > >myvector(2, vector<vector<string> >(3, vector<string>);
initialisiert.

Doch wenn ich einen vector in einer Klasse erstellen will:


class a{
vector<vector<vector<string> > >myvector;
}

Kann ich ihn nicht initialisieren, sondern muss das im Konstructor tun:


for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
for(int k=0;k<15;k++){
myvector[i][j].push_back("A");
}
}
}


Und das, will einfach nicht funktionieren.

Beste Grüße
dml

locus vivendi
26-11-2010, 12:57
Du kannst den vector in der Member-Initialisierer-Liste eines Konstruktors ganz ähnlich initialisieren wie außerhalb einer Klasse. Dein Codeschnippsel sieht auch für sicht betrachtet in Ordnung aus.

Was ist denn das Problem? Ich könnte jetzt mutmaßen, dass du mit push_back hinter die bereits angelegten Elemente kopierst, und deshalb nicht das erwartete Ergebnis bekommst, aber ohne das du mehr Code zeigst lässt sich nichts genaues sagen.

anda_skoa
26-11-2010, 13:06
Du kannst den vector in der Member-Initialisierer-Liste eines Konstruktors ganz ähnlich initialisieren wie außerhalb einer Klasse. Dein Codeschnippsel sieht auch für sicht betrachtet in Ordnung aus.


Die Benutzung der Initialisierungsliste ist quasi gleich, nur ohne Angabe des Typs und ohne Strichpunkt am Ende

Also


a::a() : myvector(2, vector<vector<string> >(3, vector<string>)


Ciao,
_

dml
29-11-2010, 09:51
Cool, hat voll geholfen, vielen Dank! :)
Dachte immer der Basisinitialisator wäre nur zum Initialisieren der Basisklasse.