vector는 시퀀스 컨테이너 이므로 원소의 저장 위치(순서)가 정해지며 배열 기반 컨테이너이므로
원소가 하나의 메모리 블록에 할당된다.
그림처럼 vector는 앞쪽이 막혀 있는 형태로 앞쪽에는 원소를 추가/제거할 수 없으며 뒤쪽에만 추가/제거할 수 있다.
차례차례 원소를 추가하는 push_back()과 제거하는 pop_back()을 가진다.
또 첫 원소를 참조하는 front()와 마지막 원소를 참조하는 back()을 가진다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for(size_t i = 0; i < v.size(); ++i)
cout << v[i] << endl;
return 0;
}
크기를 반환하는 세 멤버함수 size() capacity() max_size()를 가진다.
size() : 저장 원소의 개수
capacity() : 실제 할당된 메모리 공간의 크기
max_size() : 컨테이너가 담을 수 있는 최대 원소의 개수
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for (size_t i = 0; i < v.size(); ++i)
{
cout << v[i] << " ";
}
cout << endl;
cout << "size : " << v.size() << endl;
cout << "capacity : " << v.capacity() << endl;
cout << "max size : " << v.max_size() << endl;
return 0;
}
capacity가 6인 이유
: 원소가 추가될 때마다 메모리를 재할당하지 않고 미리 넉넉한 메모리를 확보하면 재할당과 이전 원소를 복사하는데 드는 비용을 줄일 수 있기 때문이다.
이것이 vector만이 가지는 중요한 특징이다.
'프로그래밍 > C++' 카테고리의 다른 글
map (0) | 2019.06.24 |
---|---|
list (0) | 2019.06.21 |
vector의 간략한 소개 (0) | 2019.06.20 |
STL 소개, 컨테이너, 반복자 (0) | 2019.06.13 |
함수 포인터 (0) | 2019.06.12 |