Menu
CoddyTech

양방향 이터레이터

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)
    한 양방향 반복자의 값을 다른 반복자와 교환하거나 바꿀 수 있습니다.

양방향 반복자는 입력 및 출력 반복자를 하나로 합친 순방향 반복자와 매우 유사하지만, 감소가 가능하다는 점이 다릅니다. 즉, 시퀀스의 요소에 양방향으로 접근할 수 있다는 점을 요약하며 이번 레슨을 마칩니다.

challenge icon

챌린지

쉬움

입력으로 한 줄에 10개의 숫자가 주어집니다. 다음 줄에는 숫자의 인덱스를 나타내는 숫자 X(인덱스 1-10)가 주어집니다. 양방향 반복자(bidirectional iterator)를 사용하여 먼저 인덱스 X부터 끝까지의 숫자를 출력하세요. 그 다음, 인덱스 X부터 시작하여 처음까지 역순으로 숫자를 출력하세요.

 

Input
10 20 30 40 50 60 70 80 90 100
6
Output
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++ 컴파일러