Каков наилучший способ найти позицию последнего вхождения для определенного элемента?

Как то так, но наоборот:

int pos = find(v.begin(), v.end(), item) - v.begin();

2 ответа

Решение

Ты можешь использовать std::find но используйте обратные итераторы, предоставляемые вашим контейнером:

auto it = std::find(v.rbegin(), v.rend(), item);
int index = v.rend() - it + 1;

Вам нужно +1 так как v.rend() "указывает" на элемент -1, то есть на один "мимо" первого элемента.

Используйте обратные итераторы:

find(v.rbegin(), v.rend(), item);
Другие вопросы по тегам