STL算法的反向迭代

时间:2014-05-07 11:18:58

标签: c++ stl reverse-iterator

我有一个函数,用2个参数指针调用,数组的开始和结束。我的函数将从结束指针搜索到与条件匹配的元素的开始指针。

如果我试图向前迭代,我可以用find_if执行此操作,但我需要反向迭代。 STL是否有任何规定?

注意:我可以在for循环中轻松完成此操作。我正在寻找的是一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:3)

是的,它被称为std::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