<iterator>
-
Ähm stimmt, Du hast recht mit dem Rückgabewert. ^^ Das war nur ausm Kopf.
Definiert ist advance in <iterator>
-
wenn alles nicht geht und ein
++it; ++it;
auch nicht gehen sollte, warum auch immer, dann die "harte" metdhode
//wenn gerade zahl, dann ausführen ( 2,4,6 ) // else NICHTS ! wenn ungerade also ( it = 1,3,4 ) ++it;
-
Stellt sich die Frage, ob std::list hier überhaupt das Mittel der Wahl ist, wenn solche Anforderungen benötigt werden. Evtl. wäre std::deque geeigneter. Vorausgesetzt, dass du nicht ständig Elemente in der Mitte einfügen und/oder löschen musst, ist das sogar wahrscheinlich so.
-
ich brauch list, wegen:
pop_front
push_back
sort
erase
pop_back
push_frontHab da noch so ne frage offen:
for(it=yl[k].begin(); it!=yl[k].end() and tmpl.size()!=ym[k]; std::advance(it,2)){ tmpl.push_back(*it); yl[k].erase(it); }
Debugger Error:
Program received signal SIGSEGV, Segmentation fault. 0x08049ba3 in std::list<int, std::allocator<int> >::erase (this=0xbffff1e0, __position=Cannot access memory at address 0x0 ) at list.tcc:105 105 __prev_node->_M_next = __next_node;
Sowas hab ich noch nie gesehen...
Mein Cpp beispiel ist zwar nicht das beste... aber sollte reichen,
habe es auch schon anders versucht.
-
Green_Ghost schrieb:
ich brauch list, wegen:
pop_front
push_back
sort
erase
pop_back
push_frontUnd was spricht da gegen deque außer vielleicht ein bisschen erase?
-
Wenn du das Element löschst ist der Iterator natürlich auch nicht mehr gültig.
Green_Ghost schrieb:
[cpp]
for(it=yl[k].begin(); it!=yl[k].end() and tmpl.size()!=ym[k]; std::advance(it,2)){
tmpl.push_back(*it);
it = yl[k].erase(it);
}
[/cpp]edit: deque
-
weil es keine reference unter http://www.cppreference.com/ gibt.
Wie soll ich sonst wissen wie ich deque benutzen soll?
-
oder hier
http://www.cppreference.com/cppdeque/
Es gibt dort also doch eine Referenz.
-
Was soll da besser sein als bei list?
list hat noch sort, wobei <algorithm> auch sort hat...
-
deque hat die Vorteile eines Vektors. Z.B. ist die sort-Funktion um Meilen schneller.
-
Vor allem mal hat deque Random-Access-Iteratoren, deren Fehlen ja das eigentliche Problem bei der Aufgabenstellung war
Für die angegebenen Aufgabengebiete ist deque in jedem Fall verwendbar und folglich wohl die bessere Alternative.