c++ - STL 算法的反向迭代

标签 c++ stl reverse-iterator

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

如果我尝试向前迭代,我可以使用 find_if 来执行此操作,但我需要反向迭代。 STL对此有规定吗?

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

最佳答案

是的,它叫做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

关于c++ - STL 算法的反向迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516368/

相关文章:

c++ - 字符串还没有声明,QT

c++ - 变量中的 reverse_iterator 和迭代器抽象

c++ - 为什么使用 rbegin() 而不是 end() - 1?

c++ - 函数指针和返回类型转换

c++ - 如何使用对象实例作为模板参数?

c++ - 访问动态数组中的结构中的字符串变量时如何修复 "segmentation fault (core dumped)"错误

c++ - 使用反向迭代器 boost ptree 失败

c++ - 如何使用 vector 的 vector 来读取图形?

c++ - 修改 std::set 的元素时会发生什么?

c++ - 迭代器成员行为