繁体   English   中英

C ++反转迭代器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM