我有一个函数,它使用 2 个参数指针调用,即数组的开头和结尾。我的函数将从结束指针到开始指针搜索匹配条件的元素。
如果我试图向前迭代,我可以这样做,find_if
但我需要反向迭代。STL 对此有任何规定吗?
注意:我可以很容易地在 for 循环中做到这一点。我正在寻找的是一个更优雅的解决方案。
我有一个函数,它使用 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