본문 바로가기

프로그래밍/C++

vector 1부

 vector시퀀스 컨테이너 이므로 원소의 저장 위치(순서)가 정해지며 배열 기반 컨테이너이므로

원소가 하나의 메모리 블록에 할당된다.

 

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