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

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

11

04.02.2009, 18:13

Die Geschwindigkeit spielt bei kleinen Programmen vermutlich wirklich keine Rolle, aber es wäre einfacher zu handhaben, findest du nicht? Also ich fänds einfacher, die push_back methode aufzurufen, und ihr meinen gegner zu übergeben, wie die insert methode aufzurufen, ein pair zu erstellen und ihr das zu übergeben. Aber das musst letzten endes du wissen...

Socke

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

04.02.2009, 18:14

Zitat von »"killmichnich"«

aber ich glaub bei so nem kleinen 2D-Programm macht das keinen großen unterschied von der geschwindigkeit oder is das so extrem?


In dem Fall würd ich nen vector nehmen. Es sind einfach zwei komplett verschiedene Datenstrukturen...
Ne map is für sowas nicht gedacht...

killmichnich

unregistriert

13

04.02.2009, 18:17

ach wenns keinen so großen unterschied macht machs ich erst beim nächsten spiel, sonst müsst ich jetzt alles umschreiben ^^

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

14

04.02.2009, 18:24

Häh moment ... Ich finde die Map ist hier durchaus angebracht. Möglicherweise will / muss er ja mal Gegner in der Mitte des Containers löschen, bei nem Vektor würde das a) lange dauern und b) die Indizes über die man die Gegner referenziert durcheinanderwirblen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

04.02.2009, 18:26

da wäre dann aber vielleicht ne list besser ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

16

04.02.2009, 18:32

Zitat von »"dot"«

da wäre dann aber vielleicht ne list besser ;)


Jop. Würde ich auch eher dazu tendieren. ;)

Im übrigen würde ich mir über so Zeugs noch nicht grossartig Gedanken machen, sondern einfach den Container nehmen, der vom Design her am besten passt. Eine einfache Liste-> std::list. Brauche random accesss -> std::vector. Habe ich Schlüssel/Werte-> std::map.

Vor allem machen die speziellen Sachen, die einige Container besser können erst wirklich Sinn, wenn es ein paar Hundert oder Tausend Einträge sind und darunter spielt es einfach keine Rolle.

Und wenn man mit typedefs arbeitet ist das umstellen auch keine allzugrosse umstellung. (Wenn man dann noch std::advance nutzt, anstatt direkt den Zugriff über den Operator kann man da durch eine Zeile Code die Container wechseln, ohne dadurch einen Nachteil zu haben).

17

04.02.2009, 22:47

Zitat von »"dot"«

da wäre dann aber vielleicht ne list besser ;)
Naja, nur wenn man halt auf das zweitletzte Element zugreifen will und von vorne durchiteriert (simulierter "Random Access"), ist das auch nicht ganz optimal.

Hier würde ich auch std::vector nehmen, drakon hat die Sache gut auf den Punkt gebracht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

04.02.2009, 22:50

Zitat von »"Nexus"«

Naja, nur wenn man halt auf das zweitletzte Element zugreifen will und von vorne durchiteriert (simulierter "Random Access"), ist das auch nicht ganz optimal.


sofern man das muss, natürlich...man kann sich aber auch einfach nen iterator in die liste merken statt nem index...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

19

04.02.2009, 23:29

iteratoren merken? Na dann darf aber auch nichts zwischendurch mit der Liste passieren, oder? Also wir hatten im Projekt eigentlich nur Probleme mit solchen gespeicherten Informationen, die dann schnell mal zu inkonsitenten Daten und/oder ungültigen Zugriffen führten. Daher habe ich mir angewöhnt Iteratoren so lokal wie möglich zu halten.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

20

04.02.2009, 23:32

Zitat von »"Nox"«

iteratoren merken? Na dann darf aber auch nichts zwischendurch mit der Liste passieren, oder? Also wir hatten im Projekt eigentlich nur Probleme mit solchen gespeicherten Informationen, die dann schnell mal zu inkonsitenten Daten und/oder ungültigen Zugriffen führten. Daher habe ich mir angewöhnt Iteratoren so lokal wie möglich zu halten.


Eigentlich nur bei std::vector und std::deque.. Kann es sein, dass ihr vor allem die benutzt habt? :)

Werbeanzeige