#include < vector >
< vector > 헤더파일 안에 구현되어 있음
내부적으로 동적으로 할당 된 배열을 사용하여 요소 저장
메모리 < 효율
▶ 변수 선언:
1. 기본형
vector<type> 변수명;
2. 그 외
vector<type> 변수명(size); : size개의 요소로 변수 구성
vector<type> 변수명(size, value); : 크기가 size이고, 모든 요소의 값이 value
vector<type> 변수명(iter_1, iter_2); : iter_1부터 iter_2까지의 요소를 동일한 순서로 배치하여 생성
vector<type> 변수명(변수); : "변수"의 각 요소를 동일한 순서로 복사하여 생성
▶ Iterators:
_.begin() : 첫번째 요소를 가리키는 iterator를 반환
_.end() : 마지막 요소의 다음을 가리키는 iterator를 반환
(std::vector<type>::iterator → vector형 iterator변수 선언)
▶ Capacity:
_.empty() : 해당 변수의 size가 0인지 아닌지를 알려줌 (size == 0 ? 1 : 0)
_.size() : 해당 변수의 size를 반환
(벡터에 보유 된 실제 객체의 수)
_.resize(size) : size개의 요소를 포함하도록 변수의 크기 조정
(현재의 용량보다 큰 용량이 할당 된다면 할당 된 저장 공간의 자동 재 할당이 발생)
_.capacity() : 할당 된 저장 용량의 크기 반환
(size와 같지 않다)
▶ Access:
_[i] : 변수의 위치 i에 있는 요소에 대한 참조를 반환
_.at(i) : 변수의 위치 i에 있는 요소에 대한 참조를 반환
_.front() : 변수의 첫 번째 요소에 대한 참조를 반환
_.back() : 변수의 마지막 요소에 대한 참조를 반환
▶ Insert & Erase:
1. 삽입
_.push_back(value) : 현재 마지막 요소 뒤에 새 요소를 추가
(변수의 크기가 1씩 증가, 새 벡터 크기가 현재 벡터의 capacity를 초과하는 경우에만 저장 공간이 자동으로 재 할당됨)
_.insert() : 해당 변수에 지정된 요소 이전에 새로운 요소를 삽입하고, 삽입 된 요소 수만큼 변수의 크기를 늘림
(지정된 위치에 요소를 삽입하기에 뒤에 있던 모든 요소들이 재배치 됨 → 매우 비효율적)
(push_back과 마찬가지로 용량이 초과할 경우 저장 공간의 재 할당이 이뤄짐)
|insert(iter, value) : iter 앞에 value 추가
|insert(iter, iter_1, iter_2) : iter앞에 iter_1부터 iter_2까지 추가
_.swap(변수) : 해당 변수의 내용을 동일한 타입의 "변수"의 내용과 교환
2. 삭제
_.pop_back() : 마지막 요소를 제거하고, 크기를 줄임
_.erase() : 해당 요소를 제거하고, 제거된 수만큼 변수의 크기 줄어듬
(벡터 끝 이외의 위치에 있는 요소를 지우면 지운 후에 변수의 모든 요소를 재배치함)
|erase(iter) : iter가 가리키는 요소 제거
|erase(iter_1, iter_2) : iter_1부터 iter_2까지의 모든 요소 제거
_.clear() : 변수의 모든 요소를 제거하고 크기를 0으로 만듬