Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ 양방향 반복기

<시간/>

끝에서 시작하는 방향 모두에서 범위의 요소 시퀀스에 액세스할 수 있는 권한이 있는 반복자를 양방향 반복자라고 합니다. . 반복자는 목록 맵 및 집합과 같은 데이터 유형에 대해 작업할 수 있습니다.

양방향 반복자 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