Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 08.01.2004, 22:55 Titel: List und Vector |
|
|
Was ist der feine Unterschied zwischen List und Vector?
Worin liegen die Vor- und Nachteile? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 09.01.2004, 07:56 Titel: |
|
|
List : Doppeltverkettete Liste
Am besten, wenn man oft Elemente hinzufügen oder entfernen muss.
Vector : dynamisches Array
Am besten, wenn man direkt auf die Elemente via Indices zugreifen muss. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 09.01.2004, 09:00 Titel: |
|
|
Vector ist praktisch nur ein erweiterter Array.
Eine Liste hingegen kann man beliebig erweitern und bearbeiten. |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 09.01.2004, 11:36 Titel: |
|
|
Das entscheidende ist AFAIK das du bei list auch Elemente in der mitte löschen kannst. Ein Vektor verwendet man z.B. für eine Matrix! _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 09.01.2004, 12:33 Titel: |
|
|
Was man vielleicht noch dazusagen sollte:
Die Funktion push_front() gibt es nur bei den STL-Listen. In den STL-vectors ist man gezwungen, das Element mitels push_back() hinzuzufügen. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 09.01.2004, 19:45 Titel: |
|
|
Aber ist das hinzufügen und löschen von Elementen bei Vectoren nicht genauso einfach wie bei Listen? _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 09.01.2004, 20:14 Titel: |
|
|
Alle STL Container sind fast gleich einfach zu bedienen. Aber um sie richtig einzusetzen musst du wissen was sie sind und wie sie funktionieren und vorallem: Wie schnell die Algorithmen bei dem jeweiligen Container sind. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 09.01.2004, 20:59 Titel: |
|
|
LeeDiGer hat Folgendes geschrieben: | Aber ist das hinzufügen und löschen von Elementen bei Vectoren nicht genauso einfach wie bei Listen? |
Das würde ich eher nicht sagen. Wie einfach du die Elemente löschen kannst, hängt von der Komplexität des Zugriffs ab.
D.h. bei vectors ist das verhältnismäßig einfach, weil man nur das Element über den operator [] übergeben muss. Bei Listen braucht man dafür einen Iterator, der auf das Element zeigt. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 09.01.2004, 21:06 Titel: |
|
|
Wenn man aus einem Vector löscht, braucht man auch einen Iterator. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 09.01.2004, 21:22 Titel: |
|
|
Ich schaff das aber komischerweise auch ohne:
Code: | vector<int> vec(10);
vec.erease(&vec[0]); |
(Glaub ich zumindest ) _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Zuletzt bearbeitet von The Lord of Programming am 12.01.2004, 21:10, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 09.01.2004, 22:51 Titel: |
|
|
Dann wirf doch mal nen Blick in die entsprechende Implementierung und lass dich vom gegenteil überzeugen, da sind sehr wohl Iteratoren drinne
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
LeeDiGer Super JLI'ler
Anmeldedatum: 31.08.2003 Beiträge: 366 Wohnort: Duisburg Medaillen: Keine
|
Verfasst am: 09.01.2004, 22:52 Titel: |
|
|
Ich weiß jetzt nur, dass man bei Vectoren mit Indizes auf Elemente zugreifen kann. Elemente hinzufügen und löschen ist von der komplexität doch etwa gleich, meine ich. Das wo liegt dann der Vorteil einer liste? Kann doch nicht sein, dass ein Vector einfach besser ist und die Liste einfach nur so dabei ist. _________________ Kein Rückzug! Kein Aufgeben! |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 10.01.2004, 12:23 Titel: |
|
|
Komisch, wieso hats dann immer funktioniert?
@LeeDiGer: Wie gesagt - bei Listen kann man - anstatt wie bei vectors nur hinten - auch vorne Elemente einfügen.
Außerdem wird AFAIK der vector jedesmal vollständig neuerzeugt, wenn ein Element hinzugefügt wird. Eine Liste wird nur umgeschrieben. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Kampfhund Super JLI'ler
Alter: 42 Anmeldedatum: 20.07.2002 Beiträge: 408
Medaillen: Keine
|
Verfasst am: 10.01.2004, 16:54 Titel: |
|
|
das neuerzeugen kann man afaik mit reserve(x) verhinder.
ist praktisch ein array mit x elementen. wenn allerdings das array voll ist und neue elemente hinzugefügt werden muss das array neu angelegt werden.
der vorteil liegt beim vector darin, dass man sehr schnell auf die einzelnen elemente zugreifen kann.
eine liste ist afaik eine einfach oder doppelt verkettete liste.
dh die daten liegen nicht wie beim array hintereinander im speicher sondern irgendwo verteilt und sind mit zeigern verbunden. der vorteil hierbei ist, dass neue elemente leichter eingefügt werden können (es werden einfach die zeiger aktualisiert während beim vector das ganze array neu angelegt werden muss). Die Zugriffsgeschwindigkeit ist hier niedriger als beim vector, da man erst von listenelement zu listenelement springen muss um zum angeforderten listenelement zu kommen. |
|
Nach oben |
|
|
|