Element aus beliebigem Index im Set holen

8

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.

    
Programmer 18.01.2012, 08:55
quelle

1 Antwort

17

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 :

%Vor%

In C ++ 11 gibt es auch std::next , das ähnlich ist, aber sein Argument nicht ändert:

%Vor%

std::next erfordert einen Vorwärtsiterator. Da std::set<int>::iterator jedoch ein bidirektionaler Iterator ist, funktionieren sowohl advance als auch next .

    
R. Martinho Fernandes 18.01.2012, 09:01
quelle

Tags und Links