JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=72541dbe73f7c1188962d8c044f913baMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

map vs. list

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 01.07.2007, 08:14    Titel: map vs. list Antworten mit Zitat

Hi,
ich bin gerade dabei mir sämtliche Resoucenmanager zu schreiben. Zuerst hab ich alle Elemente in ner list gespeichert wobei jedes Element ne eindeutige ID zur identifizierung bekam. Nach dieser ID konnte das Element dann später wieder gefunden werden. Irgendwann ist mir dann aufgefallen, dass alles was ich da schon gecodet hab ne map eingentlich auch schon kann.
Meine Fragen: ne Map ist ja nichts anderes als eine erweiterte list, oder ?
Gibt es da irgendwelche Performancevorteile einer Variante ? Weil können tun die dann quasi beide das gleiche.
Gibt es sonst irgendwelche Vorteile einer Variante ?
At Last : Welche Variante verwendet ihr meistens, und warum ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 01.07.2007, 08:38    Titel: Antworten mit Zitat

hi

ich verwende list eigentlich überhaupt nicht sondern nur vecotr und map.
der vorteil von map ist das du die "Eindeutigekenziffer" die eine datei in windows hat übernehmen kannst sprich desen Dateinamen als Kennung.
Bei meiner Enegine benutze ich noch Zahlen zur Kennung was ich jetzt aber bereuhe da du wenn du hundert oder mehr Texturen hast dann ihrer aufpassen des die nicht die selben Nummer haben da die Nummer nicht von der Enegine ausgegeben werden (können da man immermalwieder feste Kennziffern braucht die sich nicht zu laufzeit ändern). Aber im Buch ist in einem Kapitel auch ein Resourcenmanager gebaut(gecodet).
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 01.07.2007, 09:02    Titel: Antworten mit Zitat

Hi!

Die Containertypen unterscheiden sich ganz essentiell voneinander. List ist als doppelt verlinkte Liste implementiert und erlaubt so ein extrem schnelles Einfügen von Elementen ohne Speicher kopieren zu müssen und großen Speichermanagementaufwand.
Map ist als Binärbaum implementiert, beim einfügen wird der Baum sortiert und ausbalanciert. Das ermöglicht zwar ein relativ schnellen Zugriff auf Elemente aber das Einfügen von Elementen dauert entsprechend länger. Bei großen Datenmengen könnts von der Performance doch kritisch werden.

In deinem Fall würde sich evtl eher eine Hashmap anbieten. Soweit ich weiß bietet TR1 sowas an.

fast hawk hat Folgendes geschrieben:

ich verwende list eigentlich überhaupt nicht sondern nur vecotr und map.


Was hast du denn gegen List?

Eine schöne Grafik zur Auswahl des richtigen Kontainers ist übrigens diese hier.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 06.07.2007, 14:40    Titel: Antworten mit Zitat

fast hawk hat Folgendes geschrieben:

ich verwende list eigentlich überhaupt nicht sondern nur vecotr und map


also ich kann dir dringend empfehlen, genau zu überlegen welchen container du bei welchem Problem benutzt. Ich benutze auch eine ähnliche Grafik wie david, und es hat mir nachher schon viele Probleme erspart, wenn ich mir vorher länger Gedanken darüber gemacht hab. So kann es dann z.B. später dazu kommen, dass man eine bestimmte Funktion braucht, die im richtig gewählten Container schon von Haus aus dabei ist. Einige gravierende Vorteile einer List hat david ja auch schon genannt. In meiner Engine verwende ich bspw. eine Map in meinem Texturemanager, wo jedem String ein Zeiger auf eine Textur/Surface zugeordnet wird. In diesem String speichere ich entweder den Dateinamen oder einen Beschreibungsnamen, dann gefolgt von den Erstellungsparametern und IDs etc. So kann man dann sicherstellen, dass Texturen mit dem gleichen Dateinamen und den gleichen Parametern nur einmal erstellt werden; außerdem kann man die Erstellungsparameter und IDs für Reset- und Debugzwecke aus diesem Datenpointer rekonstruieren.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.07.2007, 12:34    Titel: Antworten mit Zitat

Ich verwende am meisten list. Z.b. für die Gegner, wenn die gerendert oder bewegt werden, muss man eh die gesammte Liste durchlaufen. Beim töten oder erstellen, kann ich die gut einfügen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum