[C++] Vector

yeolife ㅣ 2023. 7. 4. 21:40

특징

#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())