Overloading iterator에 대해 (cpp)

kyungminLim·2024년 4월 22일
0

저번 포스터에서 vector add에 대한 overloading에 대해 말했다.
cpp coding을 하다보면 iterator에 대해 알게 되는데 아래의 코드를 보면서 설명을 하겠다.

#include <iostream>
#include <vector>
using namespace std;

int main() {
	vector<int> vec = {1, 2, 3, 4, 5};
 	
    // std::vector<int>::iterator it = vec.begin();
    for(auto it = vec.begin(); vec != vec.end(); ++it) {
    	cout << *it << endl;
    }
    return 0;
}

해당 코드에서 auto it = vec.begin()을 보면 auto에 있을 type은 정확히는 위의 주석과 같다.

C++ 표준 템플릿 라이브러리(Standard Template Library, STL)에서 iterator는 컨테이너의 요소를 순차적으로 접근할 수 있도록 도와주는 객체이다. iterator는 포인터와 유사한 개념으로, 특정 컨테이너 내부의 위치를 가리키며, 이를 통해 컨테이너의 요소들을 읽거나 수정할 수 있다.

std::vector 컨테이너의 begin() 멤버 함수는 컨테이너의 첫 번째 요소를 가리키는 iterator를 반환한다. 이 iterator는 vector의 요소들을 순차적으로 접근하는 데 사용할 수 있으며, 보통 for 루프나 알고리즘 함수에서 범위 기반의 작업을 수행할 때 사용된다.

여기서 저번 포스터와 겹치는 것을 보면 iterator 객체에서 ++it 라는 연산은 ++연산이 overloading된 것으로 자세한 점은 저번 overloading 포스터를 보면 확인할 수 있다.

0개의 댓글