본문 바로가기
C++

STL 반복자(연산)

by ji-han 2025. 1. 27.

+(-) n / [n] 이 연산을 모든 컨테이너에서 사용할 수 없다는 것을 코드테스트 공부를 하면서 깨닫고 접근 방법에 대해 공부

Iterator 반복자

컨테이너의 요소들에 순차척으로 접근하는 데 사용되는 객체

 

연산 종류

연산 입출력 전진 양방향 임의 접근
* O O O O
-> O O O O
++ (전위/후위) O O O O
-- X X O O
+ n, - n X X X O
[n] X X X O
==, != O O O O
- (거리 계산) X X X O

 

+(-) n / [n] 연산은 임의 접근 반복자만이 가능하다는 것을 보여주는 줌

 

임의 접근 반복자를 지원하는 컨테이너

  • vector
  • deque
  • array

그 외 지원하지 않는 컨테이너

  • list
  • forward_list
  • set / unordered_set / multiset
  • map / unordered_map / multimap

 

임의 접근을 지원하지 않는 컨테이너에서 원하는 위치의 원소에 접근 하는 방법

컨테이너 명<자료형>::iterator iter;     // 반복자 선언

iter = s.begin();  // 초기화(begin이 이후 연산에 편리한 것 같음)

std::advance(iter, 2);          // 2번째 요소로 이동

 

*iter를 사용하여 원하느 위치의 요소에 접근이 가능해짐

 

반대로 특정 요소의 위치를 알아내는 방법

컨테이너 명<자료형>::iterator iter1 = s.begin();

컨테이너 명<자료형>::iterator iter2 = s.find(원하는 요소);

int distance = std::distance(it1, it2);

 

distance는 원하는 요소와 시작점의 차이를 이용하여 배열에서의 위치를 알 수 있음

 

 

*+(-)n / [n]으로 접근하는 것이 빠르고 좋겠지만 set이나 map을 사용을 했는데 특정 요소에 접근해야 할 경우 사용

'C++' 카테고리의 다른 글

디자인 패턴  (0) 2025.02.20
Overlap 매개변수  (0) 2025.02.12
포인터와 참조 / 스마트 포인터  (0) 2025.01.20
STL 컨테이너  (0) 2025.01.14
C++ 함수들  (0) 2024.12.31