잰이_IT/취준 | 이준

<Vector 벡터 정리>

janey25 2019. 4. 23. 17:52

<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;

}