Menu
CoddyTech

출력 이터레이터

Coddy의 C++ - 표준 템플릿 라이브러리 코스 레슨. 23개 중 15번째.

출력 반복자(Output Iterator)는 컨테이너의 값을 수정하는 데 사용되는 반복자입니다. 이들은 입력 반복자(input iterator)와 정확히 반대이며 반대 기능을 수행합니다. 시퀀스에 값을 할당하는 데 사용되지만, 해당 값에 접근하는 데는 사용할 수 없습니다. 

보시는 바와 같이, 순방향 반복자(forward iterator), 양방향 반복자(bidirectional iterator) 및 임의 접근 반복자(random access iterator)는 모두 유효한 출력 반복자입니다.


이제 출력 반복자의 특징에 대해 알아보겠습니다.


  • 등가/부등 연산자(Equality/Inequality operator)
    입력 반복자와 달리, 출력 반복자는 서로 등가성을 비교할 수 없습니다. 따라서 == 및 != 연산자를 사용하여 비교하면 오류가 발생합니다.
A == B // Wrong
A != B // Wrong

  • 역참조(Dereferencing)
    입력 반복자에서는 반복자가 가리키는 요소의 값에 접근하기 위해 역참조를 사용했습니다. 출력 반복자에서는 * 연산자를 사용하여 반복자를 역참조함으로써 반복자가 가리키는 요소에 값을 할당할 수 있습니다.
*A = 10 // Dereference with *
vector<int> numbers = {1, 2, 3, 4, 5};
vector<int>::iterator it;

for(it=numbers.begin(); it != numbers.end(); it++)
	*it = 10;

for(it = numbers.begin(); it != numbers.end(); it++)
	cout << *it << " ";
Output:
10 10 10 10 10

 위의 예제에서, 우리는 벡터를 루프하며 출력 반복자를 사용하여 모든 요소에 값 10을 할당했습니다.


  • 증가 가능(Incrementable)
    출력 반복자는 증가될 수 있으며, 증가 후에는 시퀀스의 다음 요소를 가리키게 됩니다. 이를 위해 ++ 연산자를 사용합니다.
A++ // Post increment operator
++A // Pre increment operator

  • 교체 가능(Swappable)
    서로 다른 위치를 가리키는 두 반복자는 서로 교체될 수 있습니다.

제한 사항은 출력 반복자가 가리키는 위치에 값을 할당하는 데는 사용할 수 있지만, 예를 들어 요소의 값을 다른 변수에 저장하기 위해 해당 값에 접근할 수는 없다는 점입니다.

*A = x; // Valid
x = *A; // Invalid
challenge icon

챌린지

중급

입력으로부터 벡터가 가질 요소의 개수를 나타내는 숫자 N이 주어집니다. 다음 N개의 줄에 걸쳐 하나의 숫자가 주어집니다. 모든 숫자를 벡터에 저장하세요. 그 후, 출력 반복자(output iterator)를 사용하여 각 요소에 기존 값에서 1을 더한 값을 할당하고, 수정된 요소들을 출력하세요.

 

Input
5
10
20
30
40
50
Output
11 21 31 41 51

직접 해보기

#include <vector>
#include <iostream>

using namespace std;

int main()
{
    vector<int> numbers;
    vector<int>::iterator it;

    // Enter your code here

    for(it = ; it != numbers.end(); )
    {

    }

    for(it = ; ; )
    {
        cout << /* Enter here */ << " ";
    }

    return 0;
}

C++ - 표준 템플릿 라이브러리의 모든 레슨

직접 연습해 보세요: 온라인 C++ 컴파일러