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

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

41

08.03.2011, 21:32

Selbst schuld, dann hast du einfach den falschen Container gewählt.

Kann sein, aus Erfahrung lernt man...

Aber die Unterschiede zwischen vector und list sind mir nicht ganz klar.

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

42

08.03.2011, 21:36

std::list ist eine doppelt verkettete Liste, d.h. du kannst sehr schnell an beliebiger Stelle Daten einfügen und löschen, allerdings ist es dafür aufwändiger, einen bestimmten Datensatz per Index anzusprechen.
std::vector ist ein Array mit dynamischer Länge, d.h. du kannst recht schnell ein bestimmtest Element ansprechen, aber benötigst länger, um Datensätze in der Nähe des Anfangs einzufügen/ zu löschen.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

43

08.03.2011, 22:12

std::list ist eine doppelt verkettete Liste, d.h. du kannst sehr schnell an beliebiger Stelle Daten einfügen und löschen, allerdings ist es dafür aufwändiger, einen bestimmten Datensatz per Index anzusprechen.

ausserdem benötigt sie mehr speicher(mindestens zwei zeiger pro element. also 128bit auf einem 64 bit system) und jedes element muss einzeln angefordert werden. jeder aufruf von new dauert ziemlich lang, wobei die größe relativ egal ist.
std::vector ist ein Array mit dynamischer Länge, d.h. du kannst recht schnell ein bestimmtest Element ansprechen, aber benötigst länger, um Datensätze in der Nähe des Anfangs einzufügen/ zu löschen.

wobei das einfügen und löschen innerhalb des arrays lang dauert weil alles in ein neues array kopiert werden muss. wird am ende ein neues element eingefügt oder gelöscht geht das meistens relativ schnell weil std::vector, ähnlich wie std::string, speicher vorsorglich reservieren kann. das ist der grund warum std::vector schneller sein kann als ein dynamisches array.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

44

08.03.2011, 22:14

Also ich habe wirklich den falschen Container verwendet. Das hätte in meinem C++ Buch auch besser erklärt werden können -.-

Werbeanzeige