C++로 문제를 풀다보면 vector를 사용하는 풀이 방법을 빈번하게 볼 수 있다. 따라서 이번에 vector 컨테이너에 대해 정리해보려고 한다!
C++ 표준 라이브러리(STL)에 있는 컨네이너이다. vector를 생성하면 heap에 동적 할당되는데, 배열과 마찬가지로 삽입, 삭제가 빈번한 경우 비효율적이다.
vector 헤더파일을 추가해주어야 한다.
#include <vector>
using namespace std;
vector 객체를 생성할 때에 <>에 데이터 타입을 지정해야한다.
vector<int> v; // int형 vector v 생성
vector<int> v(3); // 0으로 초기화된 크기가 3인 vector 생성
vector<int> v(3,1); // 1로 초기화된 크기가 3인 vector 생성
v.assign(3,1); // 원소 3개에 1할당
v.push_back(5); // 마지막 원소 뒤에 5삽입
v.insert(2,3); // 2번쨰 위치에 3삽입, 삽입한 곳의 iterator 반환
v.pop_back(); // 마지막 원소 삭제
v.erase(iter); // iter가 가리키는 원소 제거
v.clear(); // 모든 원소 제거, 메모리는 남아있음
v.resize(3); // v의 사이즈를 3으로 조절
v.swap(v2); // v와 v2 swap
v.at(3); // v의 3번째 요소 접근(범위검사 => 범위 오류 시 예외처리 발생)
v[3]; // v의 3번째 요소 접근(범위 검사 X)
v.front(); // 벡터의 첫번째 요소 접근
v.back(); // 벡터의 마지막 요소 접근
해당 위치 원소의 참조를 return한다.
v.begin(); // v 시작점의 주소 값 반환
v.end(); // v 마지막 다음 주소값 반환
v.rbegin(); // v의 끝지점을 시작점으로 반환
v.rend(); // v의 (시작+1)지점을 끝부분으로 반환
※ end()는 마지막 원소의 다음 위치를 가리킨다.
v.empty(); // v가 빈공간이면 true, 값이 있다면 false
v.size(); // 벡터의 크기 반환
v.capacity(); // heap에 할당된 벡터의 크기
capacity()는 vector의 type을 담을 수 있는 메모리가 할당되어 있는 공간의 용량을 반환하고, size()는 실제 유효한 원소의 개수를 반환한다.
벡터에 새로운 원소를 추가할 때,
<참조>
https://hwan-shell.tistory.com/119
https://blockdmask.tistory.com/70