Iterator

Kimbab1004·2024년 7월 21일
0

CPP

목록 보기
16/27

Iterator

Iterator(반복자)는 C++에서 컨테이너의 요소에 접근하고 순회하는 데 사용되는 객체입니다. Iterator는 포인터와 유사한 기능을 제공하지만, 더 일반화된 인터페이스를 제공하며 다양한 컨테이너에 일관된 방식으로 접근할 수 있게 해줍니다. Iterator는 주로 표준 템플릿 라이브러리(STL) 컨테이너(vector, list, map, etc.)와 함께 사용됩니다.

Iterator의 주요 기능

초기화 및 할당:

컨테이너의 begin()과 end() 함수를 통해 iterator를 초기화합니다.

begin()은 컨테이너의 첫 번째 요소를 가리키고, end()는 마지막 요소의 다음 위치를 가리킵니다.
접근:

  • 연산자를 사용하여 iterator가 가리키는 요소에 접근합니다.
    -> 연산자를 사용하여 iterator가 가리키는 요소의 멤버에 접근할 수 있습니다.
    증감 연산:

++ 연산자를 사용하여 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의 데이터를 순회하며 출력합니다.

0개의 댓글