vector erweitern
-
Hallo,
ich arbeite mit vector Befehle.
in der *.h
vector<int> viLabelTop;in der *.cpp
viLabelTop.resize(10);was muß ich tun, wenn die Kapazität des vectors nicht mehr ausreicht, um diese zu erhöhen ?
Gruß Siegfried
-
ein weiteres resize müsste es tun.
aber ich versteh nicht wieso du die größe beschrenken willst, wenn du sie eh überschreitest.
-
Wenn du deine Daten mit push_back() anfügst erhöht sich die Kapazität automatisch. Ansonsten gibt es noch reserve(). Wie wärs, wenn du dir einfach mal die Hilfe zu std::vector sowie den genannten Funktionen anschaust.
-
Das Prinzip von den STL-Container kennst du? std::vector kann theoretisch soweit wachsen bis der Speicher ausgeht. Wenn du weiter einfügen willst, einfach std::vector::push_back() benutzen.
-
Hallo,
Die Größe des Speicher wird durch das Programm bestimmt.
mit resize kann ich den vector erweitern, hat aber den Nachteil, das der vorhandene Inhalt verloren geht. Deshalb suche ich eine andere Lösung.
STL-Container kenne ich noch nicht.
kannst du mir etwas genauer deine Methode erklären ?Gruß Siegfried
-
Lies dir doch mal diesen FAQ-Beitrag aus dem C++-Forum durch. Hier unter anderen auch um std::vector.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39460.html
Vielleicht zeigst du uns auch mal einen kurzen Codeausschnitt von dir wo du deinen Vector verwendest. An einem praktischen Beispiel läßt sich das leichter zeigen.
PS: Achso vector ist ein STL-Container.
-
Hallo,
Bin noch am aufbau meiner Code. Habe den Link gelesen.
Ich habe eine Frage: pop_back() oder push_back() ?hier eine Zeile aus dem Link.
Dabei kann ich also mit der Methoder pop_back ein Element am Ende anhängen und mit push_back wieder von Ende entfernen.Gruß Siegfried
-
Genau umgekehrt.
Zitat aus der BCB-Hilfe
void
pop_back();Removes the last element of self.
void
push_back(const T& x);Inserts a copy of x to the end of self.
void
reserve(size_type n);Increases the capacity of self in anticipation of adding new elements. reserve itself does not add any new elements. After a call to reserve, capacity() is greater than or equal to n and subsequent insertions will not cause a reallocation until the size of the vector exceeds n. Reallocation does not occur if n is less than capacity(). If reallocation does occur, then all iterators and references pointing to elements in the vector are invalidated. reserve takes at most linear time in the size of self. reserve throws a length_error exception if n is greater than max_size().
Schau aber lieber mal selber rein.
-
Hallo,
also pop_back() ! mir ist aus asm noch bekannt, das man mit pop einen wert auf dem Speicher hinzufügt.
danke für alle Infos.
Gruß Siegfried
-
Beppo schrieb:
Hallo,
also pop_back() ! mir ist aus asm noch bekannt, das man mit pop einen wert auf dem Speicher hinzufügt
Falsch! push_back fügt hinzu, pop_back entfernt! Wer lesen kann ist klar im Vorteil!
void
pop_back();Removes the last element of self.
void
push_back(const T& x);Inserts a copy of x to the end of self.
-
Soviel ich weiß war das auch bei ASM so.
-
Hallo,
endlich habe ich diese verstanden.
Danke an alle.Gruß Siegfried