끝에서 시작하는 방향 모두에서 범위의 요소 시퀀스에 액세스할 수 있는 권한이 있는 반복자를 양방향 반복자라고 합니다. . 반복자는 목록 맵 및 집합과 같은 데이터 유형에 대해 작업할 수 있습니다.
양방향 반복자 forwarding iterators와 동일한 속성을 가집니다. , 감소할 수도 있다는 유일한 차이점이 있습니다. −
속성 | 유효한 표현 |
---|---|
기본 구성 가능, 복사 가능, 복사 할당 및 파괴 가능 | X a; X b(a); b =에이; |
동등/부등 연산자를 사용하여 동등성에 대해 비교할 수 있습니다(두 반복기 값이 동일한 기본 시퀀스를 반복할 때 의미 있음). | a ==b !=b |
rvalue로 역참조될 수 있습니다(역참조 가능한 상태인 경우). | *a 아->엠 |
변경 가능한 반복기의 경우(비상수 반복기):lvalue로 역참조될 수 있습니다(역참조 가능한 상태인 경우). | *a =t |
증가할 수 있습니다(역참조 가능한 상태인 경우). 결과는 역참조 가능하거나 과거의 반복자이기도 합니다. 동일하게 비교하는 두 개의 반복자는 둘 다 증가한 후에도 동일하게 비교합니다. | ++a ++ *아++ |
감소될 수 있습니다(역참조 가능한 반복기 값이 선행하는 경우). | --a ㅏ-- *ㅏ-- |
L값은 교환 가능합니다. | 스왑(a,b) |
여기서 X는 양방향 반복기입니다. , a 및 b는 이 반복자 유형의 개체이고 t는 반복자 유형(또는 lvalue에 할당될 수 있는 다른 유형이 가리키는 유형의 개체입니다. X 유형의 개체를 역참조하여 반환됨).
C++의 양방향 반복자의 개념.
-
양방향 반복기는 전달 반복기의 모든 기능과 접두사 및 접미사 감소 연산자를 지원합니다.
-
이 유형의 반복기는 끝과 시작과 같이 양방향으로 요소에 액세스할 수 있습니다.
-
랜덤 액세스 반복기는 양방향 반복기의 일종이기도 합니다.
-
양방향 반복자는 반복자를 전달하는 기능이 있지만 유일한 차이점은 이 반복자를 감소시킬 수도 있다는 것입니다.
Input: 1 2 3 4 5 6 7 8 9 10 Output: 10 9 8 7 6 5 4 3 2 1
예시
#include <iostream> #include<iterator> #include<vector> using namespace std; int main() { vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; vector<int> ::iterator it; vector<int> :: reverse_iterator rev_it; for(it = vec.begin(); it != vec.end(); it++) cout<<*it<<" "; cout<< endl; for(rev_it = vec.rbegin(); rev_it!= vec.rend(); rev_it++) cout<<*rev_it<<" "; }
출력
1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1