특징
#include <vector>
- Heap 영역에 동적할당
- 속도는 배열에 비해 느리지만 메모리를 효율적으로 관리 가능
생성
설명 | 코드 |
1차원 벡터 생성 | vector<int> vec |
2차원 벡터 생성 | vector<vector<int>> vec |
N개의 0을 가진 벡터 생성 | vector<int> vec(N, 0) |
vec2를 복사한 벡터 생성 | vector<int> vec(vec2) |
참조 및 반복자
설명 | 코드 |
i번째 원소를 참조(범위 점검o) | vec.at(i) |
i 번째 원소를 참조(범위 점검x) | vec[i] |
첫번째 원소 참조 | vec.front() *vec.begin() |
마지막 원소 참조 | vec.back() |
첫번째 원소의 주소값 | vec.begin() |
마지막 원소의 다음 주소값 | vec.end() |
마지막 원소의 주소값을 시작점으로 설정 | vec.rbegin() |
첫번째 원소의 주소값을 끝점으로 설정 | vec.rend() |
수정자
설명 | 코드 |
N개의 0을 벡터에 할당 | vec.assign(N, 0) |
i번째 위치에 0를 삽입 | vec.insert(i, 0) |
i번째 위치에 N개의 0를 밀어서 삽입 | vec.insert(i, N, 0) |
iter가 가리키는 원소를 제거 | vec.erase(iter) |
마지막 원소 뒤에 0을 삽입 | vec.push_back(0) |
마지막 원소 제거 | vec.pop_back() |
vec과 vec2의 원소와 capacity를 교환 | vec.swap(vec2) |
capacity 초기화 | vector().swap(vec) |
모든 원소 제거 ※ capacity는 그대로 |
vec.clear() |
크기 및 Capacity
설명 | 코드 |
벡터의 크기 반환 | vec.size() |
크기를 N개로 재할당 ※ 크기보다 더 크면 0 할당 |
vec.resize(N, 0) |
N개의 원소 공간을 미리 할당 | vec.reserve(N) |
할당된 공간의 크기 반환 | vec.capacity() |
벡터가 비어있으면 True, 아니면 False를 반환 | vec.empty() |
연산
설명 | 코드 |
벡터 정렬 ※ 기본 오름차순 |
sort(vec.begin(), vec.end()) |
인접한 원소의 중복 제거 ※ 정렬 필요 |
vec.erase(unique(vec.begin(), vec.end()), vec.end()) |