출력 이터레이터
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챌린지
중급입력으로부터 벡터가 가질 요소의 개수를 나타내는 숫자 N이 주어집니다. 다음 N개의 줄에 걸쳐 하나의 숫자가 주어집니다. 모든 숫자를 벡터에 저장하세요. 그 후, 출력 반복자(output iterator)를 사용하여 각 요소에 기존 값에서 1을 더한 값을 할당하고, 수정된 요소들을 출력하세요.
Input
5
10
20
30
40
50Output
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++ 컴파일러