Vector Element löschen
-
Servus,
wisst ihr zufällig wie ich ein Vektor Element löschen kann?
Danke schonmal!
-
willst du das nun zu jedem STL Container Fragen?
RTFM
-
Nein, aber es heißt ja, das man für jedes Thema einen neuen Thread aufmachen soll!
Das Fucking Manual hab ich übrigens schon gelesen, was mich aber leider nicht so arg weitergebracht hat ...
Wäre schön wenn du mir trotzdem helfen könntest ...
-
lies dir am besten mal ein Tutorial/Buch über die STL durch
Das Fucking Manual hab ich übrigens schon gelesen, was mich aber leider nicht so arg weitergebracht hat ...
SGI Vector Reference schrieb:
iterator erase(iterator pos)
-
ja, ich weiß das es mit dem erase geht, aber woher bekomm ich den iterator?
-
Den hast du, immerhin willst du das Element ja löschen. Wenn du nur den Index hast, über vec.begin() + index.
-
-
Vielen Dank, das funktioniert super! Eigentlich hätt ich ja gleich drauf kommen können ...
Noch ein kleines Problem:
typedef struct X_MEINE_STRUKTUR { string test1; string test2; string test3; } MEINE_STRUKTUR; map <string, MEINE_STRUKTUR> myFile; MEINE_STRUKTUR TestStruktur; myFile.insert(map <string, MEINE_STRUKTUR>::value_type("test", TestStruktur));
... und hier die passende Fehlermeldung dazu ...
struct 'X_MEINE_STRUKTUR' : no copy constructor available or copy constructor is declared 'explicit'
Muss ich einen Copy-Konstruktor schreiben? Und wenn ja, wie geht das?
-
Hat denn keiner von euch eine Antwort parat?
-
Dein Beispiel da ist zwar ausserordentlich hässlich, aber ansonsten korrekt.
Eventuell hast du in deiner Version noch eine Referenz drin, oder hast den Copy-Konstruktor privat gemacht?
-
Ich hab gar keinen Copy Konstruktor (weiß leider nicht was das is, bin noch relativ neu, was STL anbelangt ...)
Wenn du das Beispiel hässlich findest, versuche es bitte schöner zu machen
-
kingruedi schrieb:
Versuch den Link mal, da sind wirklich viele Informationen zu dem Thema STL
-
struct Test { string eins, zwei, drei; }; map<string, Test> myFile; Test t; myFile.insert(make_pair("Hallo", t));
Das typedef brauchst du in C++ nicht mehr, und zum Einfügen nimmt man meist make_pair.
Aber wie gesagt, so müsste es gehen. Da brauchst du keinen Copy-Konstruktor. Das Problem liegt also wo anders.
-
Warum insert und nicht
myFile["test"] = t;
?
-
cYaONE schrieb:
Ich hab gar keinen Copy Konstruktor (weiß leider nicht was das is, bin noch relativ neu, was STL anbelangt ...)
du solltest echt ein paar vernünftige C++ Bücher/Tutorials lesen. Copy Konstruktor hat nichts mit STL zu tun
-
Copy Konstruktor:
Ein Copy-Konstruktor ist ein Konstruktor mit einem Parameter des Datentyps konstante Referenz der Klasse.Klasse ( const Klasse&)
http://www-home.fh-konstanz.de/~drachen/prog/Teil-5.pdf
http://www.volkard.de/vcppkold/copykonstruktor.html
http://fara.cs.uni-potsdam.de/~kaufmann//faqs/copyvsdirect.pdf
http://www.rtr.tu-darmstadt.de/cppkurs/22_2Copy_Konstruktor.html
http://os.inf.tu-dresden.de/~jn4/cppkurs/cpp_lek5.html
-
Wenn ich es so machen soll, wie operator void gesagt hat, meldet bei mir der Compiler, das ich den operator = überladen muss ...
Hat jemand Ahnung davon, wie das mit der STL (und vor allem bei Vector) geht?
-
Im Beispiel mit den drei strings als einzige Elemente wäre der operator= automatisch korrekt generiert worden. Wie sieht deine Struktur denn jetzt aus?