새로운 과제를 풀기 위해 벡터를 더 심도 있게 들어가기로 했습니다.
벡터는 동적 배열입니다. 원소를 추가할 때, 초기에 할당 받은 용량(capacity)을 넘길 경우 새로운 메모리 공간을 할당받습니다. 이때 기존의 벡터 배열 데이터를 모두 복사하기 때문에 O(size) 만큼의 시간이 걸립니다. 따라서, 재할당이 일어나는 횟수가 많아질수록 비효율적이기 때문에 재할당이 일어나는 횟수를 줄여야합니다.
vec.size()
벡터의 사이즈 = 벡터 배열에 담긴 원소의 개수
vec.capacity()
※ capacity = 할당된 메모리 크기에 원소 타입의 크기를 나눈 값
‼️벡터의 원소를 제거해도 용량은 줄지 않습니다.
초기화 되지 않은 벡터 사용 시 주의
이를 방지하기 위해 NULL, 반복자 활용 또는 capacity()가 아닌 size()를 이용
vector<type> vec; 초기화 X, 공간 할당 X 벡터 선언
vector<type> vec(n); 초기화 NULL, 크기가 n인 벡터 선언
vector<type> vec(n, a); 초기화 a, 크키가 n인 벡터 선언 
vec.reserve(n)
if (vec.capacity() < n) { 벡터의 용량을 n으로 재할당; }

vec.resize(n)
if (vec.size() < n)
{
.begin() + n 부터 원소 삭제(소멸자 실행);
}
else if (vec.size() > n)
{
.end() 부터 원소 삽입(생성자 실행)
if (vec.capacity() < n)
{
벡터의 용량을 n으로 재할당; //reserve(n)
}
}
