反向指针迭代器的标准方法

问题描述 投票:3回答:2

是否有类似rbeginrend的指针?

我有一个指向C样式字符串的头和尾的指针,但想为其创建反向迭代器。

我想知道标准是否提供了执行此操作的方法,或者我是否必须为此编写自己的代码。

编辑:我使用低级代码是有原因的。没有std::basic_string等。目标是使用std::find查找值的最后一次出现。

c++ pointers iterator reverse
2个回答
7
投票

使用std::reverse_iterator

#include <iostream>
#include <iterator>

int main() {
    const char* s = "abc";
    std::reverse_iterator<const char*> first(s + 3);
    std::reverse_iterator<const char*> last(s);
    for( ; first != last; ++first) {
        std::cout << *first;
    }
    std::cout << '\n';
    return 0;
}

0
投票

新的C ++ 2014标准包括数组的相应功能

template <class T, size_t N> reverse_iterator<T*> rbegin(T (&array)[N]);
template <class T, size_t N> reverse_iterator<T*> rend(T (&array)[N]);

实际上,他们仅使用std :: reverse_iterator。

因此,如果您的编译器不支持这些功能,则可以自己编写

std::reverse_iterator<char *> first( tail );
std::reverse_iterator<char *> last( head );
© www.soinside.com 2019 - 2024. All rights reserved.