<Vector 벡터 정리>
<Vector 벡터 정리>
임의 접근 반복자 지원(Random Access Iterator) 배열 기반 컨테이너
원소가 하나의 메모리 블록에 연속 저장
원소 추가, 삽입시 메모리 재할당 발생
메모리 할당 크기 capacity(), 한번에 메모리 할당 reverse() - size를 줄여도 capacity는 그대로
for 문으로 vector 탐색시 v.size 만큼 i를 돌리려면 v.size 와 I 의 타입이 같아야함
clear()를 할 경우 capacity(2^n) 는 남아있다. 임시벡터와 swap을 통해 교환하면 메모리까지 해제
초기화 방법
vector<int> v(5); // 0으로 초기화댐
vector<int>().swap(v); : 임의 벡터와 swap을 하면서 벡터를 비우고 할당된 메모리(capacity)까지 해제한다.
* v.front()는 벡터의 첫번째 요소를 반환하고 v.back()는 마지막 요소를 반환한다.
임의 요소에 접근 할때는 [] 연산자(빠르지만 범위점검x)랑 at 멤버함수(점검! 범위에 벗어난 요소에 접근시 out of range예외를 throw하여 예외 처리) 사용
x 템플릿 형식
template<typename T, typename Allocator = allocartor<T>>
class Vector // T는 벡터 컨테이너 원소의 형식
예제 1)
#include<vector>
#include<iostream>
#include<string>
usingnamespacestd;
int main()
{
vector<int> v;
v.reserve(8); // 벡터 메모리 공간 8 예약 할당
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for (vector<int>::size_type i =0; i < v.size(); ++i)
cout<< v[i] <<endl;
cout<<endl;
cout<<"size : "<< v.size() //벡터 원소갯수
<<"capacity : "<< v.capacity() //벡터 할당 메모리 크기
<<"max size: "<< v.max_size() <<endl;// 최대 저장 가능 원소
cout<<endl<<"--resize(10)--"<<endl;
v.resize(10);
for (vector<int>::size_type i =0; i < v.size(); ++i)
cout<< v[i] <<endl;
cout<<endl;
cout<<"size : "<< v.size() //벡터 원소갯수
<<"capacity : "<< v.capacity() //벡터 할당 메모리 크기
<<"max size: "<< v.max_size() <<endl;// 최대 저장 가능 원소
cout<<endl<<"--resize(3)--"<<endl;
v.resize(3);
for (vector<int>::size_type i =0; i < v.size(); ++i)
cout<< v[i] <<endl;
cout<<endl;
cout<<"size : "<< v.size() //벡터 원소갯수
<<"capacity : "<< v.capacity() //벡터 할당 메모리 크기
<<"max size: "<< v.max_size() <<endl;// 최대 저장 가능 원소
cout<<endl<<"--vector clear--"<<endl;
v.clear();
if (v.empty())cout<<"벡터에 원소가 없음"<<endl;
cout<<"size : "<< v.size() //벡터 원소갯수
<<"capacity : "<< v.capacity() //벡터 할당 메모리 크기
<<"max size: "<< v.max_size() <<endl;// 최대 저장 가능 원소
return0;
}