공부/C++

반복자(iterator)란?

셩잇님 2023. 6. 12. 02:24
반응형

 

 

1. 이터레이터란?

C++에서 이터레이터는 배열, 벡터, 목록 또는 맵과 같은 컨테이너의 요소를 탐색하고 액세스할 수 있는 객체입니다. 컨테이너의 요소를 순차적으로 반복하여 요소 읽기, 수정 또는 제거와 같은 작업을 수행할 수 있는 방법을 제공합니다. 이터레이터는 컨테이너의 요소에 액세스하기 위한 일반화된 인터페이스 역할을 하며, 기본 데이터 구조의 특정 세부 사항을 추상화합니다. 컨테이너 유형에 관계없이 요소를 탐색하고 상호 작용할 수 있는 일관된 방법을 제공합니다.

 

2. 이터레이터의 종류

표준 C++ 라이브러리는 다양한 기능을 갖춘 여러 유형의 이터레이터를 제공합니다:

입력 이터레이터: 이러한 이터레이터는 컨테이너의 요소에 대한 읽기 전용 액세스를 정방향으로 허용합니다. 값을 읽고 시퀀스에서 앞으로 이동하는 데 사용할 수 있습니다. 요소를 읽으면 이터레이터는 다음 위치로 진행합니다.

출력 이터레이터: 이터레이터를 사용하면 컨테이너에 값을 정방향 전용으로 쓸 수 있습니다. 컨테이너에 요소를 삽입하거나 덮어쓰는 데 사용됩니다. 출력 이터레이터는 일반적으로 읽기 또는 랜덤 액세스를 지원하지 않습니다.

정방향 이터레이터: 이 이터레이터는 입력 이터레이터와 출력 이터레이터의 기능을 모두 결합합니다. 컨테이너의 요소에 대한 읽기 및 쓰기 액세스를 정방향 전용 방식으로 허용합니다. 다음 요소로 진행, 기존 요소 수정, 새 요소 삽입을 지원합니다.

양방향 이터레이터: 이 이터레이터는 정방향 및 역방향으로 이동할 수 있는 기능을 추가하여 정방향 이터레이터의 기능을 확장합니다. 다음 요소로 전진하고 이전 요소로 되돌아가는 기능을 지원합니다.

랜덤 액세스 이터레이터: 이터레이터는 가장 광범위한 기능을 제공합니다. 컨테이너의 모든 요소에 직접 액세스할 수 있고, 전진 및 후진 이동을 모두 지원하며, 일정한 시간 내에 원하는 위치로 점프할 수 있습니다. 랜덤 액세스 이터레이터는 가장 다재다능하고 효율적인 이터레이터입니다.

 

C++에서 이터레이터를 사용하려면 이터레이터 객체를 선언하고 컨테이너에서 원하는 위치를 가리키도록 초기화한 다음 이터레이터를 사용하여 요소에 액세스하거나 수정하는 것이 포함됩니다. 이터레이터를 비교, 증가, 감소, 참조 해제하여 현재 위치의 값을 얻을 수 있습니다.

 

3. 이터레이터 예제

#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> v = {1, 2, 3, 4, 5};

  for (auto it = v.begin(); it != v.end(); ++it) {
    cout << *it << endl;
  }

  return 0;
}

 

이 코드는 다음 출력을 인쇄합니다:

1
2
3
4
5

 

 보시다시피, for 반복문을 통해 이터레이터를 사용하여 v 벡터의 요소를 반복합니다. 이터레이터는 벡터의 시작 부분으로 초기화되고(v.begin()), 각 반복 후에 증가(++it)합니다. 반복자가 벡터의 끝에 도달하면 루프가 종료됩니다(v.end()).

 

 

4. 결론
이터레이터가 제공하는 유연성과 통일된 인터페이스를 통해 C++ 프로그래머는 특정 구현 세부 사항에 신경 쓰지 않고도 다양한 컨테이너 유형에서 작동할 수 있는 일반 알고리즘을 작성할 수 있습니다. 이터레이터는 컨테이너 요소를 순회하고 조작할 수 있는 강력하고 효율적인 방법을 제공하므로 C++ 프로그래밍의 필수 구성 요소입니다.

 

 

 

반응형

'공부 > C++' 카테고리의 다른 글

유니티를 개발자를 위한 언리얼 엔진 가이드  (0) 2023.06.18
전방선언(Forward Declaration)이란?  (0) 2023.06.12
Nan(Not A Number)란?  (0) 2023.06.12
L-Value와 R-Vaule란?  (0) 2023.06.11
Boost 라이브러리란?  (0) 2023.06.10