Vector frage
-
ok, danke, jetzt machts auch sinn.
-
ich hab noch ne frage:
kann man mehrere vectoren zu einem grossen verbinden, bzw. hinzufügen?
Ich weiss, das ging mit einer Schleife, aber das muss wärend des Programms sehr oft gemacht werden, und vielleicht gibts dafür ja eine sehr schnelle natice funtion?
-
for( auto iter : v1 ) { v2.push_back( iter ); }
-
ok, danke
-
std::vector<int> v1 = { 1, 2, 3, 4, 5 }; std::vector<int> v2 = { 6, 7, 8, 9, 10 }; v1.insert(v1.end(), v2.begin(), v2.end());
-
offget schrieb:
for( auto iter : v1 ) { v2.push_back( iter ); }
Der Nachteil bei dieser
FunktionMethode ist außerdem noch, dass man die Objekte zweimal kopiert.
-
super, danke
-
offget schrieb:
for( auto iter : v1 ) { v2.push_back( iter ); }
Außerdem kann es passieren, dass
v2
seinen Speicher mehrere Male reallokieren muss. Ethons hat´s richtig gemacht.
-
etwas möchte ich noch wissen:
erstellt ein Vector eine Kopie der Objekte oder einen Zeiger darauf?
-
Kopien.
Wenn es möglich ist, darf ein Objekt auch gemoved werden, aber das ist ein Implementierungsdetails - für dich als Vectornutzer sieht es trotzdem wie eine Kopie aus.
-
danke, aber kann man einen vector auch für einen Zeiger verwenden?
UNd wenn ja wie?
-
alterbro schrieb:
kann man einen vector auch für einen Zeiger verwenden?
klar
edit: zum "wie":
std::vector<MyClass*> myvec; MyClass* myClassPointer = GetMyClassPointer(); // irgendwie einen Pointer holen/erzeugen myvec.push_back(myClassPointer);
-
und wie?
Irgendwie schaf ichs nicht.
-
alterbro schrieb:
und wie?
Irgendwie schaf ichs nicht.wenn dir mein Beispiel nicht reicht, musst du wohl mal Code zeigen...
-
naja,dass
static std::vector<*texture> texptr;
funktioniert nicht
-
Es muss ja auch
static std::vector<texture *> texptr;
heißen.
Edit: Merk dir bitte für die Zukunft: "funktioniert nicht" ist keine Fehlermeldung, mit der man viel anfangen kann.
-
alterbro schrieb:
funktioniert nicht
Ich sollte mal nman fragen, ob er einen Filter für das Forum bauen kann, der Beiträge mit dieser Problembeschreibung automatisch verbietet.
-
sorry, es gibt diesen compilerfehler
/home/marvin/Prog/actprojects/DustRider/machine/../tools/geo/../../tools/geo/../../tools/texture/texture.h|18|Fehler: »*« kann nicht in einem Konstanten-Ausdruck auftreten|
ok, danke scheint zu funktionieren
-
SeppJ schrieb:
alterbro schrieb:
funktioniert nicht
Ich sollte mal nman fragen, ob er einen Filter für das Forum bauen kann, der Beiträge mit dieser Problembeschreibung automatisch verbietet.
Das ist aber insofern schwierig, weil ja nach dem "funktioniert nicht" auch durchaus eine genauere Fehlerbeschreibung folgen kann.
Es wäre also evtl. sinnvoll eine Abfrage ähnlich dem Spambuster anzuzeigen:
Ihr Beitrag enthält den Text "funktioniert nicht". Wir haben die Erfahrung gemacht, dass neue Benutzer häufig keine ausreichende Fehlerbeschreibung angeben.
Überprüfen Sie Ihren Beitrag bitte daraufhin, ob folgende Kritieren erfüllt sind:
...
Angabe einer Fehlermeldung (z.B. vom Compiler)
Bereitstellung des entsprechenden Codeausschnitts (Entsprechende Code Tags für C++, C#, usw. nutzen!)
...
-
ich müsste doch noch etwas wissen: wie kann ich einen wert am Ende eines Vektors hinzufügen?