Development./C++

[C++] Vector container(std::vector) 개념 및 사용법 정리

Chuuu_DevCamp:) 2020. 8. 17. 20:59
반응형

Vector container란?

vector container는 자동으로 메모리가 할당되는 배열으로, std::array의 고정 배열 기능을 더 안전하고 유용한 형태로 제공한다.

즉, new/delete를 사용하여 메모리를 동적으로 할당/해제 하지 않고도 런타임에 길이가 설정된 배열을 만들 수 있다.

 

vector를 사용하기 위해서는 <vector> 헤더파일을 추가해야 합니다.

std::vector의 변수 선언 및 초기화 방법은 아래와 같다.

#include <vector>

// 비어있는 vector 생성
std::vector<int> array1;
// 1, 2, 3, 4, 5 아이템을 가지는 vector 생성
std::vector<int> array2 = {1, 2, 3, 4, 5};
std::vector<int> array3{1, 2, 3, 4, 5};
// 기본값으로 초기화된 원소 5개를 가지는 vector 생성
std::vector<int> array4(5);
// -1로 초기화된 5개의 원소를 가지는 vector 생성
std::vector<int> array5(5, -1);
// array5와 동일한 item을 가지는 vector 생성
std::vector<int> array6(array5);

Vector container의 멤버 함수

  • iterator 관련 멤버 함수
함수명 동작
begin() 배열의 첫 번째 원소의 iterator를 리턴한다.
end() 배열의 맨 마지막 다음 원소의 iterator를 리턴한다.
rbegin() 배열을 거꾸로 했을 때 첫 번째 원소의 iterator를 리턴한다.
rend() 배열을 거꾸로 했을 때 맨 마지막 다음 원소의 iterator를 리턴한다.
cbegin() 배열의 첫 번째 원소의 iterator를 const로 리턴한다.
cend() 배열의 맨 마지막 다음 원소의 iterator를 const로 리턴한다.
crbegin() 배열을 거꾸로 했을 때 첫 번째 원소의 iterator를 const로 리턴한다.
crend() 배열을 거꾸로 했을 때 맨 마지막 다음 원소의 iterator를 const로 리턴한다.
  • Capacity 관련 멤버 함수
함수명 동작
size() 배열의 size를 리턴한다.
max_size() 배열의 최대 사이즈를 리턴한다.(size 함수와 동일한 동작. 왜 이 함수가 있는지 잘 모르겠다.)
empty() 배열이 비어있는지 확인하는 함수 (비어있을 경우 true, 아닐 경우 false 리턴)
capacity() 할당 된 storage capacity size 리턴
reserve() capacity 변경 요청
  • element access 관련 멤버 함수
함수명 동작
operator[N] N번째 인자를 리턴
at(N) N번째 인자를 리턴
front() 배열의 맨 앞 원소를 리턴
back() 배열의 맨 뒤 원소를 리턴
data() 배열을 포인터 타입으로 리턴. (배열의 첫 번째 주소를 리턴)
  • motifier 멤버 함수
함수명 동작
assign() 벡터에 새로운 내용을 집어 넣는다.벡터 객체에 이전에 있었던 원소들은 모두 삭제하고, 인자로 받은 새로운 내용을 집어 넣는다.
push_back() 벡터의 마지막 원소 뒤에 새로운 원소를 추가
pop_back() 벡터의 마지막 원소를 제거
insert() 벡터의 특정 위치에 원소를 추가
erase() 벡터의 특정 순서의 인자 또는 특정 범위의 모든 인자를 제거
swap() 대상 벡터 내용과 자신의 벡터 내용을 교체
clear() 벡터의 모든 내용을 삭제