본문 바로가기
알고리즘

C++ vector

by 도승이 2021. 7. 3.

 

Vector는 C++ 표준 라이브러리(Standard Template Library)에 있는 시퀀스 컨테이너입니다.

헤더로는 #include <vector> 을 써줘야 사용가능합니다.

 

 

 

 

 

목차

1. 초기화 및 생성

2. 요소 접근

3. 요소 삽입

4. 크기

 

 

 

 

Vector의 초기화

 vector<자료형> 변수명 벡터 생성 
 vector<자료형> 변수명(숫자) 숫자만큼 벡터 생성 후 0으로 초기화 
 vector<자료형> 변수명 = { 변수1, 변수2, 변수3... } 벡터 생성 후 오른쪽 변수 값으로 초기화 
 vector<자료형> 변수명[] = {, }  벡터 배열(2차원 백터)선언 및 초기화(열은 고정, 행은 가변)
 vector<vector<자료형> 변수명  2차원 벡터 생성(열과 행 모두 가변)
 vector<자료형>변수명.assign(범위, 초기화할 값)  벡터의 범위 내에서 해당 값으로 초기화

 

vector의 at , [] 에 대한 차이

둘다 요소에 대한 접근을 하지만 at은 인덱스 범위를 보고 예외처리를 발생시켜주고 (out_of_range)

[] (operator [] )는 범위검사를 하지않아 예외처리를 하지않습니다.

반복적으로 사용하거나 접근할때의 효율성을 생각하여 [] 를 많이 사용합니다.

 

예제 코드

#include <vector>				// STL vector 헤더
vector<int> v;					// int형타입 벡터 생성
vector<char> v;					// char형타입 벡터 생성
vector<float> v;				// float형타입 벡터 생성
vector<int> v = {1, 2, 3};			// int형타입 벡터 생성 후 1, 2, 3 으로 초기화
vector<int> v[10];				// int형타입 벡터 배열 생성 (크기 : 10)
vector<int> v(5);				// 5개의 원소를 0으로 초기화
vector<int> v(5, 2);				// 5개의 원소를 2로 초기화
vector<int> v2(v);				// 벡터 v를 복사하여 벡터v2 생성

 

 

Vector element access  (벡터의 요소 접근)

 v.at(i)   벡터의 i번째 요소 접근 (범위 검사함)
 v.[i]   (operator [])   벡터의 i번째 요소 접근 (범위 검사 안함) 
 v.front()   벡터의 첫번째 요소 접근 
 v.back()   벡터의 마지막 요소 접근 

 

 

 

Vector 에 요소 삽입

 v.push_back()   벡터의 마지막 부분에 새로운 요소 추가 
 v.pop_back()  벡터의 마지막 부분 제거 
 v.insert(삽입할 위치의 주소 값, 변수 값)  사용자가 원하는 위치에 요소 삽입 
 v.emplace(삽입할 위치의 주소 값, 변수 값)    사용자가 원하는 위치에 요소 삽입     (move로 인해 복사생성자 X) 
 v.emplace_back()  벡터의 마지막 부분에 새로운 요소 추가 (move로 인해 복사생성자 X) 
 v.erase(삭제할 위치) or v.erase(시작위치, 끝위치)  사용자가 원하는 index값의 요소를 지운다.
 v.clear()  벡터의 모든 요소를 지운다. (return size = 0)
 v.resize(수정 값)  벡터의 사이즈를 조정한다. (범위 초과시 0으로 초기화) 
 v.swap(백터 변수)  벡터와 벡터를 Swap (바꿔준다.)

 

 

 

 

Vector capacity (벡터 용량)

 v.empty()  벡터가 빈공간일때 true 반환 , 빈공간이 아닐때 false 반환
 v.size()   벡터의 크기 반환 
 v.capacity()  heap에 할당된 벡터의 최대크기 반환 
 v.max_size()  벡터가 system에서 만들어 질 수 있는 최대 크기 반환 
 v.reserve(숫자)  벡터의 크기 설정 
 v.shrink_to_fit()  capacity의 크기를 벡터의 실제 크기에 맞춤 

 

댓글