Я хотел бы найти последний элемент массива, который удовлетворяет заданному условию. В ответ я хотел бы либо:
Итератор, чтобы я мог использовать std :: distance для нахождения расстояния между этим итератором и началом вектора, либо
Непосредственно вернуть позицию указанного элемента.
В общем, я пытаюсь решить это : (i) Найдите максимальный элемент в векторе (max_element) и (ii) найдите first вхождение 0 перед этим max элементом.
Так в следующем примере:
{0, 10, 20, 0, 5, 50, 0, 70, 10, 0}
// Get max at position 7, return 0 at position 6
После использования max_element из заголовка алгоритма я попробовал что-то вроде приведенного ниже фрагмента кода с использованием обратных итераторов.
auto Itr1 = std::max_element(vect.begin(), vect.end());
auto Itr2 = std::find(Itr1, vect.rend(), [](int i){return i == 0;});
Смешивание обратных и прямых итераторов не было забавным и не работало. Кажется, должно быть более элегантное решение.