양방향 이터레이터
Coddy의 C++ - 표준 템플릿 라이브러리 코스 레슨. 23개 중 17번째.
양방향 반복자(Bidirectional Iterator)는 순방향 반복자가 가진 모든 기능을 지원할 뿐만 아니라, 두 가지 감소 연산자 (전위 및 후위)도 지원하는 반복자입니다. 따라서 양방향 반복자는 끝 방향뿐만 아니라 시작 방향으로도 요소 시퀀스에 접근하고 수정하는 데 사용할 수 있습니다.

보시다시피, 임의 접근 반복자(random access iterator)는 유효한 양방향 반복자입니다.
이제 양방향 반복자의 특징에 대해 알아보겠습니다.
- 동등/부등 연산자: 양방향 반복자는 동등 또는 부등 연산자를 사용하여 비교할 수 있습니다. 두 반복자는 둘 다 동일한 위치를 가리키고 있을 때만 같습니다.
A == B // Equality
A != B // Inequality- 역참조(Dereferencing)
양방향 반복자를 역참조하여 반복자가 가리키는 요소의 값에 접근하는 기능과 반복자가 가리키는 요소에 값을 할당하는 기능 두 가지를 모두 사용할 수 있습니다.
*A = X;
X = *A;- 증가 가능 / 감소 가능
양방향 반복자는++연산자를 사용하여 증가시킬 수 있을 뿐만 아니라,--연산자를 사용하여 감소시킬 수도 있습니다.
A++; // Post increment operator
++A; // Pre increment operator
A--; // Pre decrement operator
--A; // Post decrement operator- 교환 가능(Swappable)
한 양방향 반복자의 값을 다른 반복자와 교환하거나 바꿀 수 있습니다.
양방향 반복자는 입력 및 출력 반복자를 하나로 합친 순방향 반복자와 매우 유사하지만, 감소가 가능하다는 점이 다릅니다. 즉, 시퀀스의 요소에 양방향으로 접근할 수 있다는 점을 요약하며 이번 레슨을 마칩니다.
챌린지
쉬움입력으로 한 줄에 10개의 숫자가 주어집니다. 다음 줄에는 숫자의 인덱스를 나타내는 숫자 X(인덱스 1-10)가 주어집니다. 양방향 반복자(bidirectional iterator)를 사용하여 먼저 인덱스 X부터 끝까지의 숫자를 출력하세요. 그 다음, 인덱스 X부터 시작하여 처음까지 역순으로 숫자를 출력하세요.
Input
10 20 30 40 50 60 70 80 90 100
6Output
60 70 80 90 100 60 50 40 30 20 10직접 해보기
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> numbers;
vector<int>::iterator it1, it2;
int x, y;
// Enter your code here
it1 = numbers.begin();
it1 += x - 1;
for(it1; it1 != numbers.end(); )
cout << << " ";
cout << endl;
for(it2; it2 != numbers.begin() - 1; )
cout << << " ";
return 0;
}C++ - 표준 템플릿 라이브러리의 모든 레슨
직접 연습해 보세요: 온라인 C++ 컴파일러