Обратная итерация алгоритма STL

У меня есть функция, которая вызывается с 2 указателями на аргументы, начало и конец массива. Моя функция будет искать от конечного указателя до начального указателя элемент, соответствующий условию.

Если бы я пытался перебрать вперед, я мог бы сделать это с find_if но мне нужно повторить в обратном порядке. Есть ли в STL какие-либо условия для этого?

Примечание: я могу легко сделать это в цикле for. То, что я ищу, — это более элегантное решение.

0

Решение

Да, это называется станд :: reverse_iterator. Пример:

template<typename RandomAccessIterator>
void reverse_sort(RandomAccessIterator begin, RandomAccessIterator end) {
typedef std::reverse_iterator<RandomAccessIterator> r_iter_t;
std::sort(r_iter_t(end), r_iter_t(begin));
}

int main() {
int arr[] = { 1, 2, 3 };
reverse_sort(std::begin(arr), std::end(arr));
for(auto i : arr) std::cout << i << "\n";
}

дает

3
2
1
3

Другие решения


По вопросам рекламы [email protected]