벡터 (STL)
위키백과 ― 우리 모두의 백과사전.
벡터(영어: vector, std::vector)는 동적 배열 구조를 C++로 구현한 것이다. 이것은 C의 배열(빠른 랜덤 접근이 가능한)처럼 행동하지만 자동으로 배열의 크기 조절과 객체의 추가와 삭제가 가능하다.
벡터는 C++ 표준 템플릿 라이브러리중의 하나인 템플릿 클래스이다. 어떤 타입이라도 저장할 수 있지만, 한번에 한 타입만 저장이 가능하다. 요소에 접근하거나, 앞 또는 뒤에 요소를 추가하거나 삭제할 수 있고 크기를 알수 있는 멤버함수를 제공하고 있다.
[편집] 배열과의 차이점
C++의 배열은 메모리에서 연속적이다. 이것은 하나의 값을 가지는 블록들이 여러개가 붙어있는 것처럼 생각할 수 있다. 배열의 모든 요소는 같은 타입을 가져야만 한다.
벡터는 배열과 비슷하지만 확장된 기능을 가지고 있다. 벡터의 특징 중 하나는 at()이란 함수를 사용한다면, 존재하지 않는 요소에 접근하려 할 때 범위 에러를 발생할 것이다. 벡터는 템플릿 클래스이기 때문에, 원하는 모든 타입의 일반적인 배열(generic array)을 만들 수 있다. 이것은 벡터의 유용성을 매우 크게 하기 때문에, 모든 것을 배열처럼 사용할 수 있게 한다. 예를 들어, 벡터의 벡터를 만들 수 있다.
벡터는 무조건 데이터들을 선형적으로 만드려고 한다. 만약 capacity 보다 많은 양의 데이터를 추가시킬 경우에는, 현재 보유하고 있는 메모리의 두 배 만큼을 할당하기 때문에 단순한 추가 할당으로는 선형적인 공간을 만들어 내지 못하는 경우가 있을 수 있다. 이럴 때는 선형적인 다른 공간에 모든 원소를 하나하나 복사하기 때문에 속도가 느려진다.
이 문서는 컴퓨터에 관한 토막글입니다. 서로의 지식을 모아 알차게 문서를 완성해 갑시다. |