Diese Frage gilt für beide std::set
und std::unsorted_set
.Erhalten "Index" von Set-Element über Iterator
Ich habe einen Iterator zu einem Element in einem Satz. Ich möchte den Iterator verwenden, um einen "Index" für das Element basierend auf seiner Position in der Menge zu erhalten.
Zum Beispiel die Indizes für mein Set würde wie folgt aussehen:
int index = 0;
for(MySetType::iterator begin = mySet.begin(); begin != mySet.end(); begin++)
{
cout << "The index for this element is " << index;
index++;
}
Ich habe versucht, arithmetische Iteratoren verwenden zu tun, aber es funktioniert nicht:
int index = mySetIterator - mySet.begin();
Gibt es eine Möglichkeit zu Verwenden Sie den Iterator, um einen solchen Indexwert basierend auf seiner Position in der Menge zu erhalten?
Der richtige Weg, um einen "Abstand" zwischen zwei Iteratoren zu bekommen ist die [ 'std :: distance'] (http://en.cppreference.com/w/cpp/iterator/distance) -Funktion. Bitte lesen Sie jedoch die Antwort Jack, bevor Sie sie verwenden. –