Iterator(반복자)는 C++에서 컨테이너의 요소에 접근하고 순회하는 데 사용되는 객체입니다. Iterator는 포인터와 유사한 기능을 제공하지만, 더 일반화된 인터페이스를 제공하며 다양한 컨테이너에 일관된 방식으로 접근할 수 있게 해줍니다. Iterator는 주로 표준 템플릿 라이브러리(STL) 컨테이너(vector, list, map, etc.)와 함께 사용됩니다.
초기화 및 할당:
컨테이너의 begin()과 end() 함수를 통해 iterator를 초기화합니다.
begin()은 컨테이너의 첫 번째 요소를 가리키고, end()는 마지막 요소의 다음 위치를 가리킵니다.
접근:
++ 연산자를 사용하여 iterator를 다음 요소로 이동시킵니다(전위형 및 후위형).
-- 연산자를 사용하여 iterator를 이전 요소로 이동시킬 수 있습니다(역방향).
비교 연산:
== 및 != 연산자를 사용하여 iterator가 동일한 요소를 가리키는지 비교할 수 있습니다.
Iterator의 종류
Input Iterator: 데이터를 읽을 수 있습니다. 한 번만 전진할 수 있습니다.
Output Iterator: 데이터를 쓸 수 있습니다. 한 번만 전진할 수 있습니다.
Forward Iterator: 데이터를 읽고 쓸 수 있으며, 여러 번 전진할 수 있습니다.
Bidirectional Iterator: 데이터를 읽고 쓸 수 있으며, 전진 및 후진할 수 있습니다.
Random Access Iterator: 데이터를 읽고 쓸 수 있으며, 임의의 위치로 이동할 수 있습니다.
#include <iostream>
#include <vector>
#include <list>
using namespace std;
int main() {
vector<int> vecInt;
list<int> listInt;
// vector와 list에 1~10까지 데이터 넣기
for (int i = 0; i < 10; ++i) {
vecInt.push_back(i + 1);
listInt.push_back(i + 1);
}
// vector의 데이터를 순차적으로 출력
cout << "=============== Vector Data =============" << endl;
vector<int>::iterator iter;
for (iter = vecInt.begin(); iter != vecInt.end(); ++iter) {
cout << *iter << endl;
}
cout << endl;
// list의 데이터를 순차적으로 출력
cout << "=============== List Data =============" << endl;
list<int>::iterator listIter;
for (listIter = listInt.begin(); listIter != listInt.end(); ++listIter) {
cout << *listIter << endl;
}
cout << endl;
return 0;
}
컨테이너 초기화: vector vecInt와 list listInt를 선언하여 vector와 list 컨테이너를 초기화합니다.
데이터 삽입: for 루프를 통해 vecInt와 listInt에 1부터 10까지의 정수를 삽입합니다.
Iterator를 통한 순회:
vector::iterator iter를 사용하여 vecInt의 데이터를 순회하며 출력합니다.
list::iterator listIter를 사용하여 listInt의 데이터를 순회하며 출력합니다.