Ich habe eine Menge vom Typ set<int>
und möchte einen Iterator an eine Stelle bringen, die nicht der Anfang ist.
Ich mache folgendes:
%Vor%Ich bin neugierig, warum das nicht funktioniert und was der richtige Weg ist, um einen Iterator dorthin zu bringen, wo ich ihn haben will.
myset.begin() + 5;
funktioniert nur für Direktzugriffs-Iteratoren, die die Iteratoren von std::set
nicht sind.
Für Eingabe-Iteratoren gibt es die Funktion std::advance
:
In C ++ 11 gibt es auch std::next
, das ähnlich ist, aber sein Argument nicht ändert:
std::next
erfordert einen Vorwärtsiterator. Da std::set<int>::iterator
jedoch ein bidirektionaler Iterator ist, funktionieren sowohl advance
als auch next
.