1. Definition of Vector
1-1. Vector의 등장 배경
배열을 사용하려면 동적 할당을 해줘야 하는 C " 귀찮 "
ex ) int *arr = malloc(sizeof(int) * size); // element의 type * size 만큼 동적 메모리 할당
free(arr); // 마지막에 동적 할당한 메모리를 해제시킴
1-2. Vector 란 ?
C++의 STL(Standard Template Library)에 속한 container = 가변 size를 가진 배열
* element를 추가/삭제하면 자동으로 크기 조절됨
1-3. Size vs. Capacity
Size | Capacity |
vector에 현재 들어있는 element 개수 | vector가 수용가능한 용량 (memory) |
2. How to use Vector
2-1. header file
#include <vector>
using namespace std;
2-2. Vector 초기화
vector<자료형> v ; | vector<int> v ; |
vector<자료형> v(크기) ; | vector<int> v(4) ; = {0, 0, 0, 0} 항상 초기값은 0으로 설정됨 |
vector<자료형> v = { a, b, c, d, e .... } ; | vector<int> v = {1, 2, 3, 4, 5} ; |
vector<자료형> v ; v.assign(크기, 초기값) ; |
vector v = {1, 2, 3} ; v.assign(3, 100) ; = {100, 100, 100} 크기는 원래 크기, 초기값이 달라짐 |
vector<vector<자료형>> v ; | 2차원 벡터 (행, 열 둘다 가변) |
2-3. Vector 멤버 함수
vector<int> v
멤버 함수 | 설명 | |
정보 | v.size( ) | 원소 개수 |
v.capacity( ) | 할당된 공간 크기 | |
v.empty( ) | 벡터 v가 비어있는지 true / false 리턴 (비어있다 = size가 0) |
|
할당 | v.assign(a, n) | n개의 a를 원소로 할당 |
참조 | v.at( i ) | i번째 원소 참조 (범위 점검, 속도 느림) |
v[ i ] | i번째 원소 참조 (범위 점검 X, 속도 빠름) |
|
v.front( ) | 1st 원소 참조 | |
v.back( ) | last 원소 참조 | |
v.begin( ) | [iterator] 1st 원소 가리키는 iter 리턴 | |
v.end( ) | [iterator] last 원소의 다음을 가리키는 iter 리턴 | |
삽입 | v.insert(i, a) | i번째 인덱스에 a값 삽입 (뒤로 한칸씩 밀어서 자리 확보) |
v.insert(i, a, n) | i번째 인덱스에 a값 n개 삽입 (뒤로 한칸씩 밀어서 자리 확보) |
|
v.push_back(a) | 맨 끝에 a값 삽입 | |
제거 | v.erase(iter) | iter 위치의 원소 제거 ex ) v.erase(v.begin() + 3) ; |
v.erase(a, b) | (a) ~ (b - 1) 인덱스의 원소 제거 ex ) v.erase(v.begin() + 1, v.begin() + 5) |
|
v.pop_back( ) | last 원소 제거 | |
v.clear( ) | 모든 원소 제거 (size 감소, capacity 메모리 그대로) |
|
교체 | v2.swap(v1) | v1와 v2를 swap (capacity도 바뀜) |
'Coding Test > C++ 줍줍' 카테고리의 다른 글
[C++ 줍줍] string의 특정 값 제거하기 : index, 문자 기준 (0) | 2022.07.05 |
---|---|
[C++ 줍줍] Map의 value에 여러 개의 값을 저장하기 (0) | 2022.07.05 |
[c++ 줍줍] 대문자 <=> 소문자 (0) | 2022.05.30 |
[c++ 줍줍] 문자열 내에 존재하는 특정 문자열 치환 (0) | 2022.05.22 |
[c++ 줍줍] string 공백 기준으로 잘라서 새 배열에 저장 (0) | 2022.05.22 |