언어/C++

Vector Container

에린_1 2024. 2. 14. 16:26
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