자료구조 · 알고리즘
[C++] vector 순회하는 방법
eblee
2019. 4. 29. 13:28
처음 c++로 알고리즘 문제를 풀었을 때 낯설었던 것 중 하나는 vector를 순회해야 할 때였다.
배열처럼 인덱스로 접근하면 편할 텐데, 그것이 안되니 이상하고 어렵게만 느껴졌다.
'그럼 배열을 쓰면 되지'라는 생각이 들지만 배열에는 없는 vector의 메서드들이 필요한 순간들이 있어서 vector를 잘 다루는 것이 중요하다고 생각했다.
까먹지 않기 위해 C++에서 vector를 순회하는 방법을 기록한다.
먼저 vector를 순회하기 위해 iterator를 선언해줘야 한다.
iterator는 반복자라고 부르기도 하는데, STL 컨테이너의 메모리 주소를 가리킬 때 사용된다.
vector의 시작과 끝의 위치를 반환하는 함수인 begin()과 end()를 활용해 아래와 같이 코드를 짜면 vector의 요소들을 순회할 수 있다.
int main()
{
static const int arr[] = {16, 2, 77, 29};
vector<int> vec(arr, arr + sizeof(arr) / sizeof(arr[0]));
vector<int>::iterator ptr;
for (ptr = vec.begin(); ptr != vec.end(); ++ptr)
{
cout << *ptr << " ";
}
//출력 결과 : 16 2 77 29
}