728x90
Vector Container
- 자동으로 메모리가 할당되는 배열
Vector의 초기화
vector<자료형> 변수명 벡터 생성
vector<자료형> 변수명(숫자) | 숫자만큼 벡터 생성 후 0으로 초기화 |
vector<자료형> 변수명 = { 변수1, 변수2, ..} | 벡터 생성 후 오른쪽 변수 값으로 초기화 |
vector<자료형> 변수명[] = {,} | 벡터 배열(2차원 벡터) 선언 및 초기화(열 고정, 행가변 |
vector<vector<자료형>> 변수명 | 2차원 벡터 생성(열과 행 모두 가변) |
vector<자료형>변수명.assign(범위, 초기화할 값) | 벡터의 범위 내에서 해당 값으로 초기화 |
Vector의 Iterators
v.begin() 벡터 시작점의 주소 값 반환
v.end() | 벡터 (끝부분 + 1) 주소값 반환 |
Vector Element Access(벡터의 요소 접근)
v.at(i) 벡터의 i번째 요소 접근(범위 검사o)
v.[i] | 벡터의 i번째 요소 접근(범위 검사x) |
v.front() | 벡터의 첫 번째 요소 접근 |
v.back() | 벡터의 마지막 요소 접근 |
- at과 []의 차이점
- 둘 다 같은 n번째 요소 접근이지만 at는 범위를 검사하여 범위 밖의 요소에 접근 시 예외처리를 발생시킨다. []는 범위검사를 하지 않으며 예외처리를 발생시키지 않는다. 또한 해당범위 밖의 요소에 접근을 시도한다면 일반적인 디버깅(g++ or VC++)이 발생한다.
Vector에 요소 삽입/제거
v.push_back() 벡터의 마지막 부분에 새로운 요소 추가
v.pop_back() | 벡터의 마지막 부분 제거 |
v.insert(삽입할 위치의 주소 값, 변수 값) | 사용자가 원하는 위치에 요소 삽입 |
v.emplace(삽입할 위치의 주소 값, 변수 값) | 사용자가 원하는 위치에 요소 삽입(move 로 인해 복사생성자 x) |
v.emplace_back() | 벡터의 마지막 부분에 새로운 요소 추가(move로 인해 복사생성자x) |
v.erase(삭제할 위치) or v.erase(시작 위치, 끝 위치) | 사용자가 원하는 index값의 요소를 지운다. |
v.clear() | 벡터의 모든 요소를 지운다.(return size =0) |
v.resize(수정 값) | 벡터의 사이즈를 조정한다.(범위 초과시 0으로 초기화) |
v.swap(벡터 변수) | 벡터와 벡터를 스왑한다. |
Vector Capacity(벡터 용량)
v.empty() 벡터가 빈공간이면 true, 값이 있다면 false
v.size() | 벡터의 크기 반환 |
v.capacity() | heap에 할당된 벡터의 실제크기(최대크기) 반환 |
v.max_size() | 벡터가 system에서 만들어 질 수 있는 최대 크기 반환 |
v.reserve(숫자) | 벡터의 크기 설정 |
v.shrink_to_fit() | capacity의 크기를 벡터의 실제 크기에 맞춘다. |
728x90
'언어 > C++' 카테고리의 다른 글
String::find() 문자열에서 특수 문자 찾기 (1) | 2024.02.17 |
---|---|
삼항 연산자 (0) | 2024.02.14 |
C & C++.1 (1) | 2024.02.07 |
1. Introduction to the C++ (1) | 2023.10.02 |
9. 연산자 오버로딩 (0) | 2023.02.02 |