reverse_iterator in normalen iterator umwandel
-
Hi,
wie kann ich es erreichen, dass ein reverse_iterator in einen normalen iterator umgewandelt wird, oder, wie kann ich es erreichen, dass std::container::erase einen reverse_iterator annimmt...
Danke,
It.
-
std::Iterator schrieb:
wie kann ich es erreichen, dass ein reverse_iterator in einen normalen iterator umgewandelt wird
Über die Memberfunktion base() des reverse_iterators erhälst du den "korrespondierenden" Iterator.
Beachte das dieser "korrespondierenden" Iterator relativ zu einem Insert gesehen ist. D.h. wenn du einen reverse_iterator ri hast und die willst Code wiecont.insert(ri);
ausführen, dann kannst du stattdessen:
cont.insert(ri.base());
schreiben.
Anders sieht es beim Löschen aus: Hier ist der korrespondierende Iterator zu einem reverse_iterator der Iterator eins vor dem base()-Iterator.
Aus:cont.erase(ri);
wird also entweder:
cont::iterator it(ri.base()); cont.erase(--it);
oder aber:
cont.erase( (++ri).base() );
kann ich es erreichen, dass std::container::erase einen reverse_iterator annimmt...
Gar nicht. Benutze die oben erklärte Konvertierung.