Element eines Vectors mit einem int löschen
-
hi
ich möchte ein bestimmtest Element aus einem Vector löschen und habe dafür einen integer als Index zu diesem Element. So Funktioniert das leider nicht ...
void MeineFunktion(int iIndex) { MeinVector.erase(iIndex); }... da ein iterator erwartet wird. Dann hab ich es in etwa so versucht ...
MeineFunktion(int iIndex) { vector<int>::iterator it = MeinVector.begin(); int iVectorsize = MeinVector.size(); for(int i = 0; i< iVectorsize;) { if(i == iIndex) { MeinVector.erase(it); } it++; i++; } }... aber da kommen dann Meldungen wie "error C2440: 'Initialisierung': 'std::_Vector_iterator<_Ty,_Alloc>' kann nicht in 'std::_Vector_iterator<_Ty,_Alloc>' konvertiert werden". Wie muss die Funktion lauten damit ein Element mit Integer gelöscht werden kann. Der Vector trägt mehrere structs.
-
polarhitze schrieb:
Der Vector trägt mehrere structs.
Dann solltest du vielleicht einen passenden Iterator benutzen, keinen für vector<int>

-
void MeineFunktion(int index) { MeinVector.erase(MeinVector.begin() + index); }
-
hustbaer schrieb:
void MeineFunktion(int index) { MeinVector.erase(MeinVector.begin() + index); }Das gehört nicht ins WinAPI Forum, hustbaer.
-
CodeGrinder schrieb:
hustbaer schrieb:
void MeineFunktion(int index) { MeinVector.erase(MeinVector.begin() + index); }Das gehört nicht ins WinAPI Forum, hustbaer.
Und, darf man auf Fragen nicht antworten nur weil sie im falschen Forum stehen?
Huh?
-
hustbaer schrieb:
CodeGrinder schrieb:
hustbaer schrieb:
void MeineFunktion(int index) { MeinVector.erase(MeinVector.begin() + index); }Das gehört nicht ins WinAPI Forum, hustbaer.
Und, darf man auf Fragen nicht antworten nur weil sie im falschen Forum stehen?
Huh?Du musst Fehlverhalten nicht noch belohnen.
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum WinAPI in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
template<typename T> void erase_vector_item(std::vector<T>& vec, std::size_t index) { if (vec.size() <= index) throw std::invalid_argument("index"); vec.erase(vec.begin() + index); }...
-
(D)Evil schrieb:
template<typename T> void erase_vector_item(std::vector<T>& vec, std::size_t index) { if (vec.size() <= index) throw std::invalid_argument("index"); vec.erase(vec.begin() + index); }...
template<typename Container> void erase_index(Container &container, typename Container::size_type index) { assert(std::distance(container.begin(), container.end()) > index); typename Container::iterator it = container.begin(); std::advance(it, index); container.erase(it); }(ungetestet)