reverse_iterator 예제
2/08/2019양방향 이터레이터가 필요한 reverse_iterator는 임의 액세스 이터레이터에서만 사용할 수 있는 멤버 함수 연산자+=, 연산자+=, 연산자-==, 연산자-=또는 연산자[]를 호출해서는 안 됩니다. 첫 번째 연산자는 미리 증분된 reverse_iterator를 반환하고 두 번째 는 사후 증가 연산자인 increment 연산자의 복사본을 반환합니다. 간격띄우기를 추가 하 고 새 간격띄우기 위치에서 삽입 된 요소를 해결 하는 새 reverse_iterator반환 합니다. 실제로 역순으로 reverse_iterator는 이터레이터가 원래 시퀀스에서 언급한 요소(오른쪽)를 넘어 한 위치를 가리키는 것을 의미합니다. 따라서 이터레이터가 시퀀스(2, 4, 6, 8)에서 요소 6을 해결한 경우 reverse_iterator는 역순(8, 6, 4, 2)에서 요소 4를 처리합니다. reverse_iterator에 의해 해결 된 요소에 대 한 포인터를 제공 하는 형식입니다. 목록 이나 벡터를 통해 뒤로 반복 하려는 경우 reverse_반복기를 사용할 수 있습니다. 역방향 이터레이터는 base()를 통해 액세스할 수 있는 멤버로 유지되는 양방향 또는 임의 액세스 이터레이터로 만들어집니다. 지정된 수의 위치로 reverse_iterator가 지정한 요소에서 요소 오프셋에 대한 참조를 반환합니다. 맵의 역방향 이터레이터는 증분시 역방향으로 이동합니다. 따라서 reverse_iterator를 맵의 마지막 요소로 가리킨 다음 첫 번째 요소에 도달할 때까지 계속 증분합니다.
이렇게하려면 std::map 의 2 멤버 함수를 사용합니다: 즉, 맵을 역순으로 반복하려면 map의 reverse_iterator를 사용합니다. 이 멤버 함수는 reverse_iterator가 임의 액세스 이터레이터에 대한 요구 사항을 충족시키는 경우에만 사용할 수 있습니다. 효과: xd:::reverse_iterator에서 생성된 m_iterator 복사본을 사용하여 reverse_iterator 의 인스턴스를 구성합니다.::reverse_iterator는 멤버 오브젝트에 대한 참조를 반환하는 이터레이터와 함께 작동하지 않습니다(소위 „은닉 이터레이터”). 숨김 이터레이터의 예는 std::filesystem::path::iterator입니다. difference_type을 선언하고 사용하는 방법에 대한 예제는 reverse_iterator::operator[]를 참조하십시오. 기본 이터레이터에서 기본 reverse_iterator 또는 reverse_iterator를 구성합니다. reverse_iterator가 해결하는 요소를 반환합니다. 오른쪽 reverse_iterator에 맞게 조정되어야 하는 이터레이터입니다.
다음 예제에서는 reverse_iterator를 사용하여 역순으로 문자 배열을 인쇄합니다. 클래스 reverse_iterator : 공개 std::iterator<형식 이름 std::iterator_traits::iterator_traits, 유형 명 std:::value_type, 유형 이름 std::iterator_traits::difference_type, 유형 명 std:::iterator_type, 유형 이름 std:::iterator_type ::pointer, 지도 키의 정렬 된 순서로 요소를 저장 합니다. 예를 들어, 맵에 다음 요소를 저장하는 경우( 예: 요구 사항: 기타이터)는 암시적으로 이터레이터로 변환할 수 있습니다. 효과: m_iterator 하위 오브젝트가 y.base()로 생성되는 reverse_iterator의 인스턴스를 생성합니다. reverse_iterator에서 기본 이터레이터를 복구합니다. 이제 맵에서 역방향으로 다시 루프합니다. reverse_iterator를 사용하여 범위 b/w rbegin() 및 rend()를 반복합니다. reverse_iterator 차이 유형은 이터레이터 차이 유형과 동일합니다.