Kurze Frage: Wie Eintrag in STL Vector löschen...
-
MyVector->erase(5);
-
User_t schrieb:
Hmm, ich mach sowas zwar nie, aber wieso kannst du nicht einfach das ->begin() weglassen und nur 5 schreiben:
MyVector->erase(MyVector->begin()+5);
Geht nicht, weil vector::erase() als Argument einen Iterator haben will...
Deswegen mache ich den Call vector::begin() und frage mich ob's nicht einfacher geht...
-
1.) Frage 1 ist immer noch ungeklärt...
2.) Weitere Frage:
Ich brauch einen Vector auf Vector:
std::vector<std::vector<long>>
Ist das korrekt und die Standardlösung für sowas?
-
zum 2.
- ja, das ist korrekt.
- std::vector<std::vector<long>> bringt aber einen compilerfehler, weil >> der bitshift-operator ist. also leerzeichen setzen: std::vector<std::vector<long> >
-
Lars Hupel schrieb:
zum 2.
- ja, das ist korrekt.
- std::vector<std::vector<long>> bringt aber einen compilerfehler, weil >> der bitshift-operator ist. also leerzeichen setzen: std::vector<std::vector<long> >Danke!
Frage 1 ist noch nicht geklärt... es darf mir auch einer sagen, dass es nicht einfacher geht, dann sag ich nix mehr dazu
-
wieviel einfacher willst du es denn haben?
ist doch ganz simpel...
-
Shade Of Mine schrieb:
wieviel einfacher willst du es denn haben?
ist doch ganz simpel...Ja, es ist simpel, nicht simpel genug
im Ernst: ich dachte halt, es würde einfacher gehen, anscheinend nicht...
MyVector->Erase(POS); Sowas wäre gut
MyVector->Erase(Func() + POS); Das weniger
-
Dann mach halt so:
std::vector<TYP> myVector; ... std::vector<TYP>::iterator pos = myVector.begin() + 5; myVector.erase(pos);
:p
Caipi
-
Wieso kann man beim vector
it+5;
Und bei der list muss man
std::advance(it,5);
Gibt es dafuer eine erklaerung?
Und wenn ja, bei welchen STL gilt welche Metode?Danke,
Ghost
-
list hat kein random access
eigentlich sollte man immer advance verwenden, aber man ist da oft faul