dynamic size array
sequence container
이 vector의 특징인데
dynamic sequence array는 c++을 안다면 array로 구현이 가능하다.
int main() {
int * numsPtr = new int[5];
for (int i=0; i<5; i++) {
numsPtr[i] = i;
}
delete numsPtr;
return 0;
}
numsPtr 포인터가 스택에 만들어지고 힙에 연속적인 메모리공간이 만들어질 것이다.
하지만 delete를 잊으면 memory leak이 일어날 수 있고 제약이 있기 때문에
이 dynamic sequence array 관리해주는 컨테이너가 바로 vector이다.
int main() {
std::vector<int> nums(5);
for (int i=0; i<5; i++ {
nums[i] = i;
}
}
메모리에서 보면 vector 객체가 스택에 생기고 힙에 연속적인 메모리공간이 만들어지고
vector 객체가 메모리공간을 가리키게된다
앞의 배열과는 다르게 vector 객체인 nums가 없어질 때 힙의 메모리공간도 리턴되기 때문에 memory leak걱정이 없다.
또한 힙에 연속적인 메모리공간을 initialize하기위해 for문을 사용할 필요없이
처럼 초기화도 가능하다.
vector가 가진 함수로는 size()가 있다.
현재 컨테이너가 가지고있는 원소의 개수를 리턴해준다.
emplace_back()함수는 힙의 연속적인 메모리공간 맨 마지막에 인수로 넣은 값을 넣어 원소를 추가해준다.
pop_back()함수는 마지막 원소를 없애준다
vector를 iterate하는 방법으로는
일반적으로
하는 것이 있다.
이중에서 ranged for을 사용하는 것이 가장 안전하고 optimized 되어있다.
vector의 시간복잡도는