에브리 저장소

[C++] vector 순회하는 방법 본문

자료구조 · 알고리즘

[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
}

참고

Comments