Можно ли вернуть итератор в качестве индекса? - PullRequest
2 голосов
/ 10 января 2011

Например, если я использую std::find_if следующим образом:

std::vector<Rect>::iterator it = 
  std::find_if(regions.begin(), regions.end(), find_region(x,y));

Могу ли я получить индекс итератора it простым способом?

Ответы [ 4 ]

8 голосов
/ 10 января 2011

Попробуйте std::distance(regions.begin(), it) из заголовочного файла <iterator>.

1 голос
/ 15 июня 2011

Векторные итераторы имеют произвольный доступ, поэтому вы можете просто использовать

it - regions.begin()

но std :: distance работает с большим количеством типов итераторов.

1 голос
/ 10 января 2011

Используйте std :: distance ().Убедитесь, что вы случайно не сделали недействительным итератор, изменив вектор между ними.

1 голос
/ 10 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...