[C++/STL] STL 벡터와 배열 차이

2015. 8. 19. 23:36프로그래밍/C/C++

728x90
728x90

벡터(STL) 정의

  • 동적 배열 구조로 C++에서 구현한 것. C++ STL 중의 하나의 템플릿 클래스.
  • C의 배열처럼 빠른 랜덤 접근이 가능하지만 자동으로 배열의 크기 조절과 객체의 추가 삭제가 가능하다.
  • 요소에 접근, 앞뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알아낼 수 있다.

배열과 차이점

  • C++의 배열은 메모리에 연속적. 배열의 모든 요소는 같은 타입을 가진다.
  • 벡터는 at()함수를 사용해 존재하지 않는 요소에 접근하면 에러를 발생.
  • 템플릿 클래스기때문에 원하는 모든 타입의 일반적인 배열(generic array)을 만들 수 있다.
  • 벡터는 데이터를 선형적으로 유지한다. 저장공간보다 많은 데이터를 추가하면 현재 보유하고 있는 메모리의 두 배만큼
  • 이를 할당하기 때문에 단순한 할당으로 선형적인 공간을 못 만들때가 있다.(복사에 엄청난 성능 저하)
  • 우측 값 참조(rvalue reference)로 성능저하 해결.
728x90
반응형