Например, если я использую std::find_if следующим образом:
std::find_if
std::vector<Rect>::iterator it = std::find_if(regions.begin(), regions.end(), find_region(x,y));
Могу ли я получить индекс итератора it простым способом?
it
Попробуйте std::distance(regions.begin(), it) из заголовочного файла <iterator>.
std::distance(regions.begin(), it)
<iterator>
Векторные итераторы имеют произвольный доступ, поэтому вы можете просто использовать
it - regions.begin()
но std :: distance работает с большим количеством типов итераторов.
Используйте std :: distance ().Убедитесь, что вы случайно не сделали недействительным итератор, изменив вектор между ними.
distance( regions.begin(), it );