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

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

1

29.12.2008, 23:35

STL-Vektoren-Bestimmtes Feld löschen

Hallo,
bin im Augenblick dabei mich mit Vektoren zu beschäftigen.
Mit .pop_back (); wird ja der letzte Eintrag im Vektor gelöscht.

Wenn ich aber nur ein paar Instanzen dort drinnen stehn habe z.b von der Klasse Bogenschütze und Bogenschütz 5 wird jetzt getötet aber der Vektor hat 10 Felder da wird ja jetzt wenn ich .pop-back (); aufrufe nicht Bogenschütze 5 gelöscht.

Also gibt es eine Funktion mit der ich jetzt ein bestimmtes Feld wieder "herausnehmen" kann?

Oder muss ich das so lösen?

C-/C++-Quelltext

1
delete vEinheitenB (4);

Anonymous

unregistriert

2

29.12.2008, 23:38

http://www.cppreference.com/wiki/stl/vector/erase

3

29.12.2008, 23:47

Du solltest dir überlegen, ob ein Vector der beste Container für dich ist. Toll an einem Vector ist, dass man auf das n-te Element superschnell zugreifen kann, dafür dauert einfügen und löschen aber wesentlich länger (vor allen Dingen mittendrin, am Ende vom Vektor kriegt man das mit tricksen auch recht schnell hin).
Eventuell wäre eine list z.B. angebrachter.
Lieber dumm fragen, als dumm bleiben!

Errschaffer

Alter Hase

  • »Errschaffer« ist der Autor dieses Themas

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

4

29.12.2008, 23:57

Zitat von »"unsigned long"«

http://www.cppreference.com/wiki/stl/vector/erase

Danke werds mir gleich mal anschauen.


@Jonathan_Klein
Das eine list besser für sowas ist hab ich schon oft gehört (obwohl ich noch nicht wiess was das ist).Das war ja jetzt auch nur ein Beispiel und ich würde das in einem richtigen Spiel sicherlich nicht mit einem Vektor machen.Wollt halt nur mal wissen ob sowas machbar ist.

Anonymous

unregistriert

5

30.12.2008, 00:00

Jonathan_Klein
Lass ihn nen vector benutzen. Außerdem ist deine Aussage (mal wieder) sehr politisch ausgedrückt - kurz: Zu pauschal.

Dazu muss gesagt werden, die "Revolution" bricht sicherlich erst aus bei einer Anzahl von Elementen über mehrere Tausend. Ich bezweilfe (aufgrund gesundem Menschenverstand), das er diese Größenordnung angreift.

6

30.12.2008, 02:05

Fürs erste ist vector sicher nicht schlecht, wegen des Random Access. std::list hat halt den Nachteil, dass die inneren Elemente nur über Iteratoren erreichbar sind. Mit der Zeit kann man es sich aber trotzdem überlegen. Was abgesehen von der Performance noch ein Grund für std::list darstellt, ist die Tatsache, dass Zeiger, Referenzen und Iteratoren gültig bleiben.

Das war nun etwas abgeschweift, also vorläufig einfach std::vector benutzen. ;)

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

7

31.12.2008, 16:02

Ach könnt ihr, also Nexus und Jonathan_Klein, bitte mal mit dem ständigen Blabla über welcher Container wo (immer -.-) der Beste ist sein lassen ausser es wurde explizit gefragt?

Es nervt und bringt den Thread Off-Topic statt die Frage des jeweiligen Thread-Erstellers zu beantworten!

Dankeschön.

Werbeanzeige