std::iterator
https://ansohxxn.github.io/stl/chapter16-2/
[C++ 표준] STL 반복자(+ 반복자의 종류 Iterator Category
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀 🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
ansohxxn.github.io
iterator를 별도로 사용하는 이유?
1) 만약 반복문 도중 무언가를 삭제해야 할 일이 있다면 iterator로 지우고 2칸 뛰고 등의 방식으로 처리해줄 수 있음.
이는 auto로는 불가능함!
2) vector, array와 같이 [index]꼴의 접근이 불가능한 자료구조일 경우 별도로 iterator를 정의해주어야 할 수도 있음.
예) unordered_map의 경우 데이터들을 일정한 순서로 저장하는게 아님. 때문에 iterator가 필요할 수 있음.



참고사항
벡터의 경우 vector.begin()은 첫번째 인자를 가리키는 게 맞지만, vector.end()는 마지막 원소 +1을 가리킨다.
즉 for loop을 다음 형태로 짜야 한다.
for (vector<int>::iterator i = v.begin(); i != v.end(); i++)
std::advance
https://ence2.github.io/2020/11/stdadvance-%EC%98%88%EC%A0%9C/
std::advance 예제
iterator를 원하는 위치로 옮길 수 있는 함수이다. 컨테이너의 iterator를 i번째 위치로 옮기고 싶을 때 사용할 수 있습니다.
ence2.github.io
http://www.soen.kr/lecture/ccpp/cpp4/39-2-4.htm
혼자 연구하는 C/C++ by WinApi
임의 접근 반복자(Random Iterator)는 최상위 레벨의 반복자이며 제공하는 기능이 가장 많다. 양방향 반복자의 모든 기능을 포함하므로 * 연산자로 읽기, 쓰기와 ++, -- 연산자로 앞 뒤로 이동하기, 같
www.soen.kr
'lang > c++' 카테고리의 다른 글
std::shared_ptr은 thread-safe한가? (0) | 2023.05.30 |
---|---|
atan, atan2 (0) | 2022.07.05 |
Bitwise operator (C/C++) (0) | 2021.08.20 |
스마트포인터와 RAII (0) | 2021.05.30 |
stl::queue 초기화 (0) | 2021.04.02 |