2014-03-18 4 views
1

포인터에 rbeginrend과 같은 것이 있습니까?역방향 포인터 반복기의 표준 방법

나는 C 스타일 문자열의 head와 tail에 대한 포인터를 가지고 있지만 그것들을위한 reverse iterator를 만들고 싶습니다.

표준에서 제공하는 방법이 있는지 또는이 코드를 직접 작성해야하는지 알고 싶습니다.

편집 : 이유를 위해 저수준 코드를 사용하고 있습니다. 아니 std::basic_string 등. 목표는 std::find을 사용하여 마지막 값 발견을 찾는 것입니다.

+2

'표준 : reverse_iterator ' – Brian

+0

에 C 스타일의 문자열을 넣어 ['표준 : string'] (HTTP : //en.cppreference.com/w/cpp/string/basic_string)? –

+1

이터레이터에서 원하는 것은 무엇입니까? 일반적으로 포인터의 추상화로 반복자를 생각합니다. std 알고리즘을 사용하기를 원한다면, 끝이 마지막 요소를 지나면 끝난다. – rerun

답변

6

사용 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 표준 배열 단순히 표준 :: reverse_iterator를 사용 사실

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<char *> first(tail); 
std:;reverse_iterator<char *> last(head); 
관련 문제