C++/STL 컨테이너

반복자(iterator)에 대해

coding-potato 2025. 1. 8. 18:23

iterator

C++에서 컨테이너(예: std::vector, std::list, std::map 등) 내부의 요소들을 순차적으로 접근하고 조작하기 위해 사용하는 객체입니다. 반복자는 포인터와 유사하게 동작하지만, 컨테이너의 종류에 맞춰 다양한 기능과 동작을 제공합니다.

반복자 기본 개념

반복자는 다음과 같은 작업을 수행할 수 있는 객체입니다:

  • 값에 접근: 반복자는 컨테이너의 요소를 가리키며, *it처럼 * 연산자를 사용해 요소의 값을 접근할 수 있습니다.
  • 이동: 반복자는 ++ (다음 요소로 이동) 및 -- (이전 요소로 이동) 연산자를 지원합니다.
  • 비교: 반복자는 == 및 != 연산자를 사용해 서로 비교할 수 있습니다.

반복자 사용 예시

C++에서 벡터에 대해 반복자를 사용하는 예시를 보여드리겠습니다.

 

 

선언할 때 std::vector<int>::iterator를 매번 적는 것은 성가시므로 대신 auto를 사용하면 좋습니다.

auto에 대한 정보는 아래 글에서 확인하세요.

https://coding-potato-record.tistory.com/272

 

auto 키워드

auto자동 타입 추론을 위한 키워드로, 변수 선언 시 타입을 자동으로 추론하도록 하는 기능을 제공합니다. 즉, 변수의 타입을 명시적으로 지정하지 않고, 컴파일러가 초기화된 값을 보고 해당 타

coding-potato-record.tistory.com

 

반복자의 종류

반복자는 몇 가지 종류로 나눠질 수 있습니다:

  1. 입력 반복자 (Input Iterator): 하나의 요소에 대해 읽기만 가능.
  2. 출력 반복자 (Output Iterator): 하나의 요소에 대해 쓰기만 가능.
  3. 전방 반복자 (Forward Iterator): 읽기 및 쓰기 가능, 한 방향으로만 이동.
  4. 양방향 반복자 (Bidirectional Iterator): 전방과 후방으로 모두 이동 가능.
  5. 임의 접근 반복자 (Random Access Iterator): 전방/후방으로 이동하며, 인덱스를 사용해 특정 위치에 직접 접근 가능.

std::vector와 같은 컨테이너는 임의 접근 반복자를 제공합니다. 즉, 벡터의 반복자는 ++나 --로 이동할 수 있을 뿐만 아니라, 인덱스를 사용하여 임의의 요소에 빠르게 접근할 수도 있습니다.

반복자와 포인터의 차이점

반복자는 포인터와 비슷한 역할을 하지만, 포인터는 메모리 주소를 직접 가리키는 반면, 반복자는 컨테이너에 맞는 다양한 동작을 지원하는 객체입니다. 예를 들어, std::list와 같은 연결 리스트에서 반복자는 포인터처럼 직접적인 주소 이동을 지원하지 않지만, 반복자를 사용하면 list의 요소를 순차적으로 접근할 수 있습니다.

'C++ > STL 컨테이너' 카테고리의 다른 글

STL 컨테이너 종류  (0) 2025.01.08
STL 컨테이너 - unordered_set  (0) 2025.01.08
STL 컨테이너 - unordered_map  (0) 2025.01.08
STL 컨테이너 - set  (0) 2025.01.07
STL 컨테이너 - forward_list  (0) 2025.01.07