[英]C++ reverse an iterator
是否可以在C ++中反转迭代器?
例如,许多算法的设计原则是您传递开始和结束迭代器:
template <typename T>
void func( Iterator begin, Iterator end ){
...
}
现在假设在内部,我需要在容器上向前和向后迭代:
template <typename T>
void func( Iterator begin, Iterator end ){
// Iterate forward
...
// Iterate backward
...
}
我当然可以将负值传递给std::advance
。 但我想知道是否可以将迭代器转换为反向迭代器。 那可能吗?
您只需在参数上调用std::make_reverse_iterator
即可获得范围的反向视图。 cpp参考页面有一个演示。 这当然是假设可以逆转。
不可能完全普遍。 例如,考虑一个单链表,您只能在一个方向上进行迭代(即,它是前向可迭代但不是双向可迭代 )。
在您的情况下,解决方案将是函数的调用者传递反向迭代器。
参考: https : //en.cppreference.com/w/cpp/experimental/ranges#Iterators
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.