vector und Position
-
ok verstanden
kann ich es mit list oder map einfacher lösen ?
-
kann ich es mit list oder map einfacher lösen ?
Dass musst du wissen ...
Vector nimmt man, wenn man schnell auf ein von dem Index (Reihenfolge) bestimmtes element zugreifen will. (Fuer C API funktionen ist manchmal noch wichtig, das die daten in nem Array, also zusammenhaengend vorliegen, da nimmst auch den vector)
Als0 das "5.te" Element usw.
Wenn das nicht brauchst (oder das mit dem zusammenhaengenden Speicher), oder dir was anderes wichtiger ist (mit ner liste kommst auch aufs 5. element, nur ned so schnell), dann war dein Vector eh ne FehlentscheidungCiao ...
-
007ski schrieb:
ok verstanden
kann ich es mit list oder map einfacher lösen ?Mal von der Suche abgesehen, aber wenn du dir den Iterator wegspeicherst, kannste
ganz schnell mit ++It bzw. --It eins nach vorn bzw. eins nach hinten gehen. Und
der Code oben war lediglich ein Beispiel, wie man mit Iteratoren umgeht.mfg
v R
-
das vector<type>::iterator It = myvec.begin(); zeigt ja aufs erste element.
das vector<type>::iterator It = myvec.end(); zeigt aber nicht aufs letzte .. aber ich brauch genau das letzte .. wie kann man das setzen? It = myvec.end()-1; geht ja nun leider nicht
-
vector hat doch einen RA-Iterator oder? Dann sollte das schon gehen...
Mit myvec.size() bekommst du auch die Anzahl der Elemente -> kannst imho auch das letzte bestimmen.
MfG SideWinder
-
guestxxx schrieb:
das vector<type>::iterator It = myvec.begin(); zeigt ja aufs erste element.
das vector<type>::iterator It = myvec.end(); zeigt aber nicht aufs letzte .. aber ich brauch genau das letzte .. wie kann man das setzen? It = myvec.end()-1; geht ja nun leider nicht
virtuell Realisticer schrieb:
[...]ganz schnell mit ++It bzw. --It eins nach vorn bzw. eins nach hinten gehen.[...]
Ich denk du weißt jetzt wie
-
iterator vector::end ()
The member function returns a random-access iterator that points just beyond the end of the sequence.
Also kann man sehrwohl mit end()-1 auf das letzte Element zugreifen...
MfG SideWinder
-
ah it-- ist echt gut. zu einfach um drauf zu kommen.
das size() klappt irgendwie nicht bei map .. aber bestimmt mein fehler
-
Benutze aber möglichst die Postfixnotation, sprich statt i++ und i-- solltest du ++i und --i verwenden
-
Hallo,
Benutze aber möglichst die Postfixnotation,
Du meinst Präfixnotation....
-
CarstenJ schrieb:
Hallo,
Benutze aber möglichst die Postfixnotation,
Du meinst Präfixnotation....
Ja, hab mich versprochen
-
guestxxx schrieb:
ah it-- ist echt gut. zu einfach um drauf zu kommen.
das size() klappt irgendwie nicht bei map .. aber bestimmt mein fehlerDoch size() klappt ganz sicher auch bei Map
map<KeyTyp,Typ> myMap; unsigned long int anz_in_map = myMap.size();
Aber mit Iteratoren ist sowieso alles viel schöner
MfG SideWinder
-
SideWinder schrieb:
Aber mit Iteratoren ist sowieso alles viel schöner
Warum ist es denn schöner mit Iteratoren zuzugreifen, statt über nen Index?
Welche Vorteile hat man dadurch dann?
-
Na vor allem der einheitliche Zugriff auf sämtlliche Container! std::list hat zB gar keinen op[], der von std::map macht nicht genau das was du dir darunter vorstellst, etc.
MfG SideWinder
-
Achso. Danke SideWinder