Meine STL-Abklatsch List
-
Ähm hier fehlen schon mal iteratoren. Und wie kann ich hier nacheinander durch alle Elemente iterieren? mit [] ?
Inperformanter geht es ja wohl gar nicht mehr.
-
Cocaine schrieb:
SnorreDev schrieb:
Einen sprungpointer ueber 10 Objekte oder so, um schneller durchiterieren zu koennen.
Wofür soll das gut sein? Wenn man eine Liste durchläuft, will man doch normalerweise jedes Element anschauen, und wer viel suchen muß, greift wohl kaum zu einer Liste.
Ich denke eher an so sachen wie - sortierte Listen, und da ist es sehr nuetzlich, und spart einiges an Zeit, da man nicht mehr jedes Element checken muss, sondern sucht halt nach einem Element mit was weiss ich - ID 157 oder Name "Detlef"
-
Optimizer schrieb:
Ähm hier fehlen schon mal iteratoren. Und wie kann ich hier nacheinander durch alle Elemente iterieren? mit [] ?
Inperformanter geht es ja wohl gar nicht mehr.Hey nicht aufregen
Ich bin noch ganz am Anfang und wollte von euch erstmal die groben Fehltritte aufgezeigt bekommen bevor ich in einem falschen Stil weitermache.
Scheint aber so ja nicht nicht verkehrt zu sein wie ich das angegangen bin.Sicher ist der [] operator nicht gerade schnell
aber ich mag ihn und will ihn dabei haben.
Weitere methoden und auch iteratoren kommen noch, falls euch aber Designfehltritte auffallen dann sagt es bitte jetzt nicht das ich am Ende dann alles umkrepeln muss weil ich am Anfang Mist gebaut habe
-
gegen den op[] sag ich ja nichts (auch wenn man ihn bei einer list nicht häufig brauchen sollte). aber dass er die einzige möglichkeit ist, durchzuiterieren, ist nicht so toll.
außerdem vermisse ich methoden um nen iterator auf den anfang und das ende der list zu bekommen.
sorry für die 1337 kleinschreibung aber ich futter gerade.
-
Alles klar, dass hat mich wieder aufgeheitert
Könntest du mir noch bei dieser Frage helfen:
**
- Wenn meine Liste einmal für Pointer und einmal für Instanzen verwendbar sein soll, so muss ich doch alle methoden zum hinzufügen überladen oder nicht?**Eigentlich kann ich mir die Antwort ja selber geben (Ja, man muss überladen), trotzdem möchte ich das noch gesagt bekommen
-
Nein, eigentlich nicht. Außerdem sollte ein Node ein T enthalten und kein T*, IMHO.
-
ich finde, der op[] sollte nicht rein.
Man schreibt sonst viel zu leicht Schleifen wie
for(size_t i=0; i<myList.size(); ++i) { myList[i] = myList[i]+17; }
Und schon hat man sich ein O(n^2) eingefangen. Vor allem wenn man zum Beispiel von vector auf list umstellt fällt einem sowas dann nicht so schnell auf. In der STL ist es so, daß man halt mit advance den anfangsiterator weiterrücken kann. Das macht mehr Sinn, weil man nicht so leicht so unperformante Sachen baut.
MfG Jester
-
So langsam wirds, aber dann hab ich zu den Iteratoren eine Frage (bezieht sich auch auf den []operator).
ist ein iterator nicht eine Art zeiger den man dann Schritt für Schritt weiterzeigen lässt?
Wo wäre dann der Unterschied ob ich Liste[10] benutze oder mir einen iterator aufs erste element geben lass und dann hochzähl?
-
Der Unterschied ist da nicht zu sehen. Dafür ist ein Iterator auch gar nicht gedacht.
Optimizer meint das man die Liste durchläuft. Wenn du dann jedes mal den []-Operator nutzt ist absolut in performant.Wenn du jetzt unbeding _nur_ auf das 10 Element zugreifen musst, dann ist der []-Operator die richtige Wahl denn dann wäre das iterieren inperformant.
MfG eViLiSSiMo
-
Und ich dachte ein iterator wäre dazu da einen datentyp zu durchlaufen
Das man nicht den op[] nutzt ist mir klar, nur womit durchläuft man dann einen Datentyp(vector, list usw) wenn nicht per it ?
-
Wenn du jetzt unbeding _nur_ auf das 10 Element zugreifen musst, dann ist der []-Operator die richtige Wahl denn dann wäre das iterieren inperformant.
Wieso, dem op[] bleibt doch auch nichts anderes übrig, als bis 10 durchzuiterieren. Der op[] hat nie irgendeinen Vorteil. Daher kann man ihn tatsächlich durchaus weglassen.
-
Wenn du einen operator [] für Listen programmierst, hast du wohl das Anwendungsgebiet für Listen nicht verstanden.