To pytanie dotyczy zarówno std::set
, jak i std::unsorted_set
.uzyskiwanie "indeksu" elementu zestawu za pomocą iteratora
Mam iteratora do elementu w zestawie. Chciałbym użyć iteratora, aby uzyskać "indeks" dla elementu na podstawie jego lokalizacji w zestawie.
Na przykład, wskaźniki dla mojego zestawu będzie w następujący sposób:
int index = 0;
for(MySetType::iterator begin = mySet.begin(); begin != mySet.end(); begin++)
{
cout << "The index for this element is " << index;
index++;
}
Próbowałem robić arytmetycznych za pomocą iteratorów, ale to nie działa:
int index = mySetIterator - mySet.begin();
Czy istnieje jakiś sposób, aby użyć iteratora, aby uzyskać taką wartość indeksu na podstawie jego lokalizacji w zestawie?
Prawidłowy sposób na uzyskanie "odległość" między dwoma iteratorów jest funkcja [ 'std :: distance'] (http://en.cppreference.com/w/cpp/iterator/distance). Jednak przeczytaj odpowiedź Jack przed użyciem. –