vector는
Dynamic Size Array 다이나믹
Sequence Container 연속적인 배열
vector를 사용하지 않은 Dynamic array의 예
Stack에 numsPtr라는 포인터가 만들어지고
Heap에 5칸의 연속적인 메모리공간이 만들어진다.
numsPtr는 Heap에 있는 연속적인 메모리공간을 가리킨다.
int main() {
int * numsPtr = new int[5];
for (int i = 0; i < 5; i++) {
numsPtr[i] = i;
}
delete[] numsPtr;
}
이 경우 delete[] numsPtr를 하지 않으면 메모리 누수가 일어나고, 제약이 있어
Dynamic array를 관리해주는 컨테이너를 제공하는데, 이것이 바로 "벡터"이다.
아래는 벡터에 0부터 4까지 요소를 넣는 예와
0부터 4까지 요소를 넣은 뒤 5를 push하는 코드이다.
아래에 보이는 것과 같이 잡고있는 메모리를 풀어주지 않는다.
벡터 STL에서 알아서 메모리를 할당하고 해제해주기 때문이다.
#include <vector>
int main() {
std::vector<int> nums(5);
for (int i = 0; i < 5; i++) {
nums[i] = i;
}
}
#include <iostream>
#include <vector>
int main() {
std::vector<int> nums{0,1,2,3,4}; // 원하는 값으로 초기화
std::emplace_back(5);