※ std::vector 요약
많이 사용하는 시퀀스 컨테이너 std::vector에 대한 설명이다.
std::vector는 동일 타입의 자료 집합으로써 흔히 배열에 비유를 많이 한다.
또한 템플릿 기반이므로 임의 타입을 요소로 가질 수 있으며, 요소 개수에 따라 동적으로 메모리를 관리한다.
다른 컨테이너들에 비해 구조가 단순하고 사용 방법이 쉬우며 속도도 빠른편이다, 또 실용적이라 활용 빈도가 높다.
※ std::vector의 특징
- 배열을 대체할 수 있다.
- 동일 타입의 자료 집합이며 각 요소는 연속된 위치에 배치된다.
- 연속된 위치에 배치되므로 임의 위치를 빠른 속도로 액세스 할 수 있다.
- 최상위 레벨의 임의 접근 반복자를 제공하므로 STL의 거의 모든 알고리즘 사용 가능하다.
- 삽입, 삭제 속도가 느리다. 중간 삽입, 삭제는 더 느리다.
※ std::vector와 배열
- 배열의 크기는 고정이지만 std::vector는 요소 개수에 따라 자동(동적)으로 늘어난다.
- 배열과 std::vector 모두 사용 방법이 쉽다.
- 배열과 std::vector 모두 데이터를 연속된 위치에 순차적으로 저장한다.
- 연속된 위치에 순차적으로 저장하므로 랜덤 엑세스가 가능하다.
- 속도는 보통 배열이 std::vector보다 빠르다.
※ std::vector를 사용해야 하는 경우
- 저장할 데이터의 개수가 가변적일때
- 중간에 데이터 삽입, 삭제가 적거나 없을때
- 저장된 요소를 자주 검색하지 않을때
- 랜덤 엑세스를 자주 할때
분 류 |
멤버 함수 |
설 명 |
Iterators |
begin |
첫 번째 원소를 가리키는 반복자를 리턴한다. |
cbegin |
첫 번째 원소를 가리키는 상수 반복자를 리턴한다. |
end |
마지막 원소를 가리키는 반복자를 리턴한다. |
cend |
마지막 원소를 가리키는 상수 반복자를 리턴한다. |
rbegin |
역 순차열의 첫 번째 원소를 가리키는 반복자를 리턴한다. |
crbegin |
역 순차열의 첫 번째 원소를 가리키는 상수 반복자를 리턴한다. |
rend |
역 순차열의 마지막 원소를 가리키는 반복자를 리턴한다. |
crend |
역 순차열의 마지막 원소를 가리키는 상수 반복자를 리턴한다. |
Element access |
at |
n번째 원소를 참조할 때 사용하며 범위 점검을 하므로 []보다 느리다. |
operator[] |
n번째 원소를 참조할 때 사용하며 범위 점검을 안하므로 at보다 빠르다. |
front |
첫 번째 원소의 참조를 리턴한다. |
back |
마지막 원소의 참조를 리턴한다. |
Capacity |
empty |
원소 존재 유무를 체크한다. 아무것도 없으면 true, 있으면 false를 리턴한다. |
size |
원소의 개수를 리턴한다. |
max_size |
담을 수 있는 원소의 최대 개수를 리턴한다. |
resize |
vector의 크기를 변경하고 default 값이나 임의 값으로 초기화한다. |
capacity |
vector에 할당된 메모리의 크기를 리턴한다. |
reserve |
지정한 크기 만큼의 메모리를 미리 할당한다. |
shrink_to_fit |
사용되지 않는 capacity size를 제거한다. 즉 size() == capacity()가 된다. |
Modifiers |
clear |
vector의 모든 원소를 제거한다. |
assign |
기존 원소들은 모두 제거 후, 임의 값으로 n개의 원소를 할당한다. |
insert |
임의 위치에 임의 값을 삽입한다. |
emplace |
원소 삽입시 컨테이너 내부에서 생성 후 임의 위치에 임의 값을 삽입한다. |
emplace_hint |
제공 안 함 |
erase |
임의 위치의 원소나 지정 범위의 원소를 삭제한다. |
push_front |
제공 안 함 |
emplace_front |
제공 안 함 |
pop_front |
제공 안 함 |
push_back |
vector의 끝에 원소를 추가한다. |
emplace_back |
원소 삽입시 컨테이너 내부에서 생성 후 컨테이너의 끝에 원소를 추가한다. |
pop_back |
vector의 마지막 원소를 제거한다. |
swap |
v1.swap( v2 )일때 v1과 v2를 swap한다. |
List operations |
merge |
제공 안 함 |
splice |
제공 안 함 |
remove |
제공 안 함 |
remove_if |
제공 안 함 |
reverse |
제공 안 함 |
unique |
제공 안 함 |
sort |
제공 안 함 |
Lookup |
count |
제공 안 함 |
find |
제공 안 함 |
lower_bound |
제공 안 함 |
upper_bound |
제공 안 함 |
equal_range |
제공 안 함 |
Observers |
key_comp |
제공 안 함 |
value_comp |
제공 안 함 |
hash_function |
제공 안 함 |
key_eq |
제공 안 함 |
Allocator |
get_allocator |
vector의 allocator 객체를 반환한다. |