+(-) 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 |