是否有类似rbegin
和rend
的指针?
我有一个指向C样式字符串的头和尾的指针,但想为其创建反向迭代器。
我想知道标准是否提供了执行此操作的方法,或者我是否必须为此编写自己的代码。
编辑:我使用低级代码是有原因的。没有std::basic_string
等。目标是使用std::find
查找值的最后一次出现。
使用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;
}
新的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 );