Study/Language
[C++ STL] std::vector 주요 멤버 함수 목록
Arq.Dev5igner
2022. 2. 25. 17:15
※ std::vector 요약
많이 사용하는 시퀀스 컨테이너 std::vector에 대한 설명이다.
std::vector는 동일 타입의 자료 집합으로써 흔히 배열에 비유를 많이 한다.
또한 템플릿 기반이므로 임의 타입을 요소로 가질 수 있으며, 요소 개수에 따라 동적으로 메모리를 관리한다.
다른 컨테이너들에 비해 구조가 단순하고 사용 방법이 쉬우며 속도도 빠른편이다, 또 실용적이라 활용 빈도가 높다.
std::vector는 동일 타입의 자료 집합으로써 흔히 배열에 비유를 많이 한다.
또한 템플릿 기반이므로 임의 타입을 요소로 가질 수 있으며, 요소 개수에 따라 동적으로 메모리를 관리한다.
다른 컨테이너들에 비해 구조가 단순하고 사용 방법이 쉬우며 속도도 빠른편이다, 또 실용적이라 활용 빈도가 높다.
※ std::vector의 특징
- 배열을 대체할 수 있다.
- 동일 타입의 자료 집합이며 각 요소는 연속된 위치에 배치된다.
- 연속된 위치에 배치되므로 임의 위치를 빠른 속도로 액세스 할 수 있다.
- 최상위 레벨의 임의 접근 반복자를 제공하므로 STL의 거의 모든 알고리즘 사용 가능하다.
- 삽입, 삭제 속도가 느리다. 중간 삽입, 삭제는 더 느리다.
- 배열을 대체할 수 있다.
- 동일 타입의 자료 집합이며 각 요소는 연속된 위치에 배치된다.
- 연속된 위치에 배치되므로 임의 위치를 빠른 속도로 액세스 할 수 있다.
- 최상위 레벨의 임의 접근 반복자를 제공하므로 STL의 거의 모든 알고리즘 사용 가능하다.
- 삽입, 삭제 속도가 느리다. 중간 삽입, 삭제는 더 느리다.
※ std::vector와 배열
- 배열의 크기는 고정이지만 std::vector는 요소 개수에 따라 자동(동적)으로 늘어난다.
- 배열과 std::vector 모두 사용 방법이 쉽다.
- 배열과 std::vector 모두 데이터를 연속된 위치에 순차적으로 저장한다.
- 연속된 위치에 순차적으로 저장하므로 랜덤 엑세스가 가능하다.
- 속도는 보통 배열이 std::vector보다 빠르다.
- 배열의 크기는 고정이지만 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 객체를 반환한다. |