Hogy törölhetek egy bizonyos vector elemet c++-ban?
Utánanéztem és hiába írom be a következőt:
VectorElements.erase(ElementIndex, ElementIndex+2);
Az erasemeghívásakor a következőt hibát kapom:
No mathcing funcition for call std::vector<std::basic_string<char>>::erase(int&,int)
Ezt sajnos nem tudom értelmezni. Stringeket tárol a vectorom amúgy. Hozzáadni hozzátudok, sőt azokat ki is tudom íratni, de itt gondban vagyok. Mit rontottam el?
Köszi megoldottam iterátorokkal. Most megpróbálom a list-et.
A list "fejlettebb" adatszerkezet, mint a vector amúgy?
Úgy értem, hogy a haladóbb programozók már list-et használnak?
A vectorban is bárhonnan törölhet, csak iterátorral kell megcsinálnia a paraméterezést.
VectorElements.erase(ElementIndex, ElementIndex+2);
helyett:
VectorElements.erase(VectorElements.begin()+ElementIndex, VectorElements.begin()+ElementIndex+2);
A vectorElements.begin() a vektor első elemére mutató iterátor, ami a pointer-aritmetikához hasonlóan már eltolható a szükséges index-el.
Nem fejlettebb, hanem másabb. Nézd át ezeket az előadás diavetítéseket és képben leszel:
Én egy menüt készítek éppen és azt íratom ki. A törlésre azért van szükség, hogy a kiválasztott elemet mát ne tudja még egyszer választani. Ilyenkor törli az adott elemet és újra kiírja a menüt.
Erre vectort vagy list-et célszerű használni?
Én úgy értelmezem, ahogy te írtad, a vector "közvetlen elérésű" elemkből áll. Szerintem itt jobb a vector.
Vagy rosszul látom?
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!