[C++/STL] STL 벡터와 배열 차이
2015. 8. 19. 23:36ㆍ프로그래밍/C/C++
728x90
728x90
벡터(STL) 정의
- 동적 배열 구조로 C++에서 구현한 것. C++ STL 중의 하나의 템플릿 클래스.
- C의 배열처럼 빠른 랜덤 접근이 가능하지만 자동으로 배열의 크기 조절과 객체의 추가 삭제가 가능하다.
- 요소에 접근, 앞뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알아낼 수 있다.
배열과 차이점
- C++의 배열은 메모리에 연속적. 배열의 모든 요소는 같은 타입을 가진다.
- 벡터는 at()함수를 사용해 존재하지 않는 요소에 접근하면 에러를 발생.
- 템플릿 클래스기때문에 원하는 모든 타입의 일반적인 배열(generic array)을 만들 수 있다.
- 벡터는 데이터를 선형적으로 유지한다. 저장공간보다 많은 데이터를 추가하면 현재 보유하고 있는 메모리의 두 배만큼
- 이를 할당하기 때문에 단순한 할당으로 선형적인 공간을 못 만들때가 있다.(복사에 엄청난 성능 저하)
- 우측 값 참조(rvalue reference)로 성능저하 해결.
728x90
반응형
'프로그래밍 > C/C++' 카테고리의 다른 글
[C++, Json] jsoncpp 사용하기 (5) | 2016.01.06 |
---|---|
[C/C++] 삼항 연산자 (4) | 2015.11.27 |
[C++11] 주요 기능들 (0) | 2015.09.07 |
[C++] 스마트포인터(Smart Pointer) (0) | 2015.07.14 |
[STL] vector의 at()과 []의 차이 (1) | 2015.07.11 |
2차원 벡터 사용하기 (1) | 2015.07.08 |
비트 연산으로 정수에서 이진수 0,1 뽑아내기 (0) | 2015.07.08 |