Vector von Arrays

Hi

Ich versuch gerade einen Vector der als Elemente 3-elementigen String Arrays enthält zu definieren.

Mit vector funktionierts nicht, denn wenn ich versuche vector[position][0]=„test“ schreibe bekomm ich die Meldung:

23 main.cpp incompatible types in assignment of const char[5]' to std::string[3]’

Weiß jemand wie man das hinkriegt?

lg
fabian

Hallo,

Ich versuch gerade einen Vector der als Elemente 3-elementigen
String Arrays enthält zu definieren.
Mit vector funktionierts nicht, denn wenn ich
versuche vector[position][0]=„test“ schreibe bekomm ich die
Meldung:
Weiß jemand wie man das hinkriegt?

Was gnau meinst Du? Sowas hier vielleicht:

 vector \> v\_arr(2);
 
 int position = 0;

 v\_arr[position].push\_back("test1");
 v\_arr[position].push\_back("test2");
 v\_arr[position].push\_back("test3");
 
 cout 

Grüße

CMБ

Was gnau meinst Du?

Sowas ist doch ein Vector in einem Vector, ich will ein normales Array fixer Größe in einem Vector. Müsste bei deinem Code nicht, wenn man v_arr[0].push_back(„test“) aufruft, ein Fehler kommen, da der „äußere Vector“ ja auch noch keine Element besitzt?
Dann müsste man ja zuerst v_arr.push_back(leerer Vector) aufrufen oder?

fabian

Hallo,

Sowas ist doch ein Vector in einem Vector, ich will ein
normales Array fixer Größe in einem Vector.

Warte mal, ich glaube ‚vector‘-Template-Argumente
können ausser Basisdatentypen nur Objekte sein,
die einen Defaultkonstruktor (und iirc auch einen
Copyconstruktor?) aufweisen.

Müsste bei deinem Code nicht, wenn man
v_arr[0].push_back(„test“) aufruft, ein
Fehler kommen, da der „äußere Vector“ ja
auch noch keine Element besitzt?

Weil der „äussere Vector“ noch kein
Element hat, muss man ja push_back nehmen,
da es eins erzeugt. Aber das Beispiel
war nicht so optimal :wink:

Dann müsste man ja zuerst v_arr.push_back(leerer Vector)
aufrufen oder?

Mal ein besseres Beispiel:

 - - - - 8
 #include 
 #include 
 ...
 using namespace std;
 ...
 int n\_rows=3, row;
 int n\_cols=3, col;
 
 // array[r][c] setup
 vector \> v\_table(n\_rows);
 for (row=0; row(n\_cols);
 
 // array [r][c] initialization
 char buffer[]="1-Hello";
 for (row=0; rowGrüße

CMБ

Warte mal, ich glaube ‚vector‘-Template-Argumente
können ausser Basisdatentypen nur Objekte sein,
die einen Defaultkonstruktor (und iirc auch einen
Copyconstruktor?) aufweisen.

Aha…

Habs jetzt so gemacht wie in deinem Beispiel jetzt funktionierts. Danke.

Noch ne kleinere Frage: Wenn ich einen Pointer auf den Vector habe funktioniert v_test[0] nicht, *v_test[0] auch nicht, nur v_test->at(0). Kann ich trotzdem irgendwie die [] Notation verwenden? Wie muss ich den V. dereferenzieren?

fabian

Noch ne kleinere Frage: Wenn ich einen Pointer auf den Vector
habe funktioniert v_test[0] nicht, *v_test[0] auch nicht, nur
v_test->at(0). Kann ich trotzdem irgendwie die [] Notation
verwenden? Wie muss ich den V. dereferenzieren?

(\*v\_test)[0]

oder

v\_test-\>operator[](0)

thx [owT]
.