Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

LsFan

Frischling

  • »LsFan« ist der Autor dieses Themas

Beiträge: 29

Beruf: Der Böse Admin sein xD

  • Private Nachricht senden

1

10.06.2013, 17:02

Items aus Stringvector löschen???

Ja nochma,

von eben die Frage hab iche erledigt: Danke sehr an alle :D

wie kann ich aus dem Stringvector denn ein Wort rausfinden und dieses dann löschen???

mfg LsFan :D:D:D
(\ /) | Dies ist Hase.
(^.^) | <-- Bitte kopiere Hase in deine Signatur
(*_*) | und hilf ihm, die Weltherrschaft an sich zu reißen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

10.06.2013, 17:03

find/erase ?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

LsFan

Frischling

  • »LsFan« ist der Autor dieses Themas

Beiträge: 29

Beruf: Der Böse Admin sein xD

  • Private Nachricht senden

3

10.06.2013, 17:08

und wie sähe so ein code aus

PS: sorry ... bin noch Anfänger
(\ /) | Dies ist Hase.
(^.^) | <-- Bitte kopiere Hase in deine Signatur
(*_*) | und hilf ihm, die Weltherrschaft an sich zu reißen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

10.06.2013, 17:11

Hier und den Rest schaffst du bestimmt schon alleine;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

5

10.06.2013, 17:51

Du kannst std::remove benutzen:

C-/C++-Quelltext

1
2
3
4
5
std::vector<string> blabla;

...
string stringToDelete = "loesch mich";
std::remove(blabla.begin(), blabla.end(), stringToDelete);



Allgemein denke ich aber, dass wenn du ein element aus einem vector entfernen willst (und zwar nicht nur am ende/anfang), der std::vector der falsche datentyp ist! lieber std::set, std::unordered_set oder std::list verwenden.
Die haben dann auch eine remove methode, wo du direkt ein element anhand des inhaltes/key löschen kannst.

6

10.06.2013, 18:25

Du kannst std::remove benutzen:

C-/C++-Quelltext

1
2
3
4
5
std::vector<string> blabla;

...
string stringToDelete = "loesch mich";
std::remove(blabla.begin(), blabla.end(), stringToDelete);


Remove entfernt das angegebene Element und verschiebt die folgenden nach vorne. Die Größe des Containers wird nicht geändert! Remove gibt einen Iterator auf das neue "Ende" zurück. Alle Elemente danach sind undefiniert. Es müsste also heißen:

C-/C++-Quelltext

1
blabla.erase(std::remove(blabla.begin(), blabla.end(), stringToDelete), blabla.end());


Allgemein denke ich aber, dass wenn du ein element aus einem vector entfernen willst (und zwar nicht nur am ende/anfang), der std::vector der falsche datentyp ist! lieber std::set, std::unordered_set oder std::list verwenden.
Die haben dann auch eine remove methode, wo du direkt ein element anhand des inhaltes/key löschen kannst.

Nur weil ein Element entfernt wird ist vector nicht der falsche Datentyp.

EDIT: Gerade bei kleinen Datentypen ist ein vector so gut wie immer schneller als eine list: C++ benchmark – std::vector VS std::list
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

7

11.06.2013, 00:48

Nur weil ein Element entfernt wird ist vector nicht der falsche Datentyp.

EDIT: Gerade bei kleinen Datentypen ist ein vector so gut wie immer schneller als eine list: C++ benchmark – std::vector VS std::list


Ok ich weiß jetzt natürlich nicht, wie seine datenstruktur am ende aussieht, aber wenn man sich anguckt, dass die anderen extra remove methoden haben... da bieten sich die doch schonmal an.
ich gebe dir recht, dass std::vector schon gut schnell ist... allerdings ist string weder ein kleiner datentyp noch ein pod datentyp.... zwar wird das verschieben in c++11 wesentlich schneller sein, weil einfach std::move benutzt werden kann aber trotzdem langsamer als bei pod datentypen wo einfach memcpy verwendet wird. ich benutze vector eigentlich immer nur wenn ich indexzugriff brauche, oder eine liste die sich nicht verändert(oder nur wenig)
std::list verwende ich eigtnlich auch ziemlich selten... ich würd in den meisten fällen einfach std::unordered_map/set benutzen... die sind auch viel schneller, was das Suchen des elementes angeht... da hab ich das element schon gelöscht, bevor ich den vector auch nur durchsucht habe


------------------
Edit: 1000. Beitrag... juhu *party-smiley*

Werbeanzeige