- Vector 컨테이너
- Deque 컨테이너
- List 컨테이너
시퀸스 컨테이너
- Vector, Deque, List 컨테이너가 있으며, 저장 원소가 삽입 순서에 따라 상대적인 위치(순서)를 갖는 컨테이너를 말함
Vector 컨테이너
템플릿 형식
template<typename T, typename Allocator = allocator<T>> class vector
인터페이스
vector v : 빈 컨테이너
vector v(n) : 기본값으로 초기화된 n개의 원소를 갖는 컨테이너
vector v(n, x) : x값으로 초기화된 n개의 원소를 갖는 컨테이너
vector v(v2) : v2 컨테이너의 복사본(복사 생성자 호출)
vector v(b, e) : 반복자 구간으로 [b, e)로 초기화된 원소
v.assign(n, x) : v를 x값으로 n개의 원소를 할당
v.assign(b, e) : v를 반복자 구간 [b, e)로 할당
v.at(i) : i번째 원소를 참조(const, 비 const 버전이 있으며 범위점검을 포함) / []연산과 기능이 동일
v.back() : 마지막 원소를 참조(const, 비 const 버전)
p = v.begin() : p는 v의 첫 원소를 가리키는 반복자(const, 비 const 버전)
x = v.capacity() : x는 v에 할당된 크기
v.clear() : v의 모든 원소를 제거
v.empty() : v가 비었는지 확인
p = v.end() : p는 v의 마지막 원소를 표시하는 반복자(const, 비 const 버전)
q = v.erase(p) : q는 다음 원소를 가리키며, p가 가리키는 원소를 제거
q = v.erase(b, e) : 반복자 구간[b, e)의 모든 원소를 제거, q는 다음 원소를 가리킴
v.front() : v의 첫번째 원소를 참조(const, 비 const 버전)
q = v.insert(p, x) : p의 위치에 x값을 삽입, q는 삽입한 원소를 가리킴
v.insert(p, n, x) : p가 가리키는 위치에 n개의 x값을 삽입
v.insert(p, b, e) : p가 가리키는 위치에 반복자 구간 [b, e)의 원소를 삽입
x = v.max_size() : x는 v가 담을 수 있는 최대 원소의 개수 ( = 메모리의 크기)
v.pop_back() : v의 마지막 원소를 제거
v.push_back() : v의 끝에 원소를 추가
p = v.rbegin() : p는 v의 역 순차열의 첫 원소를 가리키는 반복자(const, 비 const 버전)
p = v.rend() : p는 v의 역 순차열의 끝 원소를 가리키는 반복자(const, 비 const 버전)
v.reserve(n) : n개의 원소를 저장할 공간을 예약
v.resize(n) : v의 크기를 n으로 변경하고 확장되는 공간의 값을 기본값으로 초기화
v.resize(n, x) : v의 크기를 n으로 변경하고 확장되는 공간의 값을 x로 초기화
v.size() : v의 원소의 개수
v.swap(v2) : v와 v2를 바꿈
<vector의 템플릿의 특수화(bool 타입)>
v1 == v2 : 1과 2의 모든 원소가 같은가?
v1 != v2 : 1과 2의 모든 원소 중 하나라도 다른 원소가 있는가?
v1 < v2 : 문자열 비교처럼 2가 1보다 큰가?
v1 <= v2 : 문자열 비교처럼 2가 1보다 크거나 같은가?
v1 > v2 : 문자열 비교처럼 1이 2보다 큰가?
v1 >= v2 : 문자열 비교처럼 1이 2보다 크거나 같은가?
v[i] : i번째 원소를 참조(const, 비 const 버전이 있으며 범위 점검이 없음)
템플릿 멤버 형식
allocator_type : 메모리 관리자 형식
const_iterator : const 반복자 형식
const_pointer : const value_type* 형식
const_reference : const value_type& 형식
const_reverse_iterator : const 역 반복자 형식
difference_type : 두 반복자 차이의 형식
iterator : 반복자 형식
pointer : value_type* 형식
reference : value_type& 형식
reverse_iterator : 역 반복자 형식
size_type : 첨자(index)나 원소의 개수 등의 형식
value_type : 원소의 형식
Vector의 특징
- 배열 기반 컨테이너
- 임의 접근 반복자
- capacity()는 vector만이 가지는 유일한 멤버 함수
- 컴파일러마다 다르며, 메모리의 크기(capacity)가 일정 규칙에 의해 확장됨
Deque 컨테이너
템플릿 형식
template<typename T, typename Allocator = allocator<T>> class deque
인터페이스
deque dq : dq는 빈 컨테이너
deque dq(n) : dq는 기본값으로 초기화 된 n개의 원소를 가짐
deque dq(n, x) : dq는 x값으로 초기화 된 n개의 원소를 가짐
deque dq(dq2) : dq는 dq2의 복사본(복사 생성자 호출)
deque dq(b, e) : dq는 반복자[b, e)로 초기화 된 원소를 가짐
dq.assign(n, x) : dq에 x값으로 초기화 된 n개의 원소를 할당
dq.assign(b, e) : dq에 반복자 [b, e)로 할당
dq.at(i) : i번째의 원소를 참조(const ,비 const 버전 / 범위 점검 포함)
dq.back() : 마지막 원소를 참조(const, 비 const 버전)
p = dq.begin() : p는 첫 원소를 가리키는 반복자(const, 비 const 버전)
dq.clear() : 모든 원소를 제거
dq.empty() : dq가 비었는지 확인
p = dq.end() : p는 마지막 원소를 가리키는 반복자(const, 비 const 버전)
q = dq.erase(p) : p가 가리키는 원소를 제거, q는 다음 원소를 가리킴
q = dq.erase(b,e) : 반복자 [b, e)를 제거, q는 다음원소를 가리킴
dq.front() : 첫 원소를 참조(const, 비 const 버전)
q = dq.insert(p, x) : p의 위치에 x값을 삽입, q는 삽입한 원소를 가리킴
dq.insert(p, n, x) : p의 위치에 x값을 n개만큼 삽입
dq.insert(p, b, e) : p의 위치에 반복자 [b, e)를 삽입
x = dq.max_size() : x는 dq가 담을 수 잇는 최대 원소의 개수(메모리의 크기)
dq.pop_back() : dq의 마지막 원소를 제거
dq.pop_front() : dq의 첫 원소를 제거
dq.push_back(x) : dq의 끝에 x를 추가
dq.push_front(x) : dq의 앞쪽에 x를 추가
p = dq.rbegin() : p는 dq의 역 순차열의 첫 원소를 가리키는 반복자(const, 비 const 버전)
p = dq.rend() : p는 dq의 역 순차열의 끝 원소를 가리키는 반복자(const, 비 const 버전)
dq.resize(n) : dq의 사이즈를 n으로 변경하고 확장 시, 기본값으로 초기화
dq.resize(n, x) : dq의 사이즈를 n으로 변경하고 확장 시, x값으로 초기화
dq.size() : dq의 원소의 개수
dq.swap(dq2) : dq와 dq2를 swap
<deque의 템플릿 특수화(bool타입)>
dq1 == dq2 : 1과 2의 원소가 같은가?
dq1 != dq2 : 1과 2의 원소가 하나라도 다른게 있는가?
dq1 < dq2 : 1이 2보다 작은가?
dq1 <= dq2 : 1이 2보다 작거나 같은가?
dq1 > dq2 : 1이 2보다 큰가?
dq1 >= dq2 : 1이 2보다 크거나 같은가?
dq[i] : i번째 원소를 참조(const, 비 const 버전)
멤버 형식
allocator_type : 메모리 관리자 형식
const_iterator : const 반복자 형식
const_pointer : const value_type* 형삭
const_reference : const value_type& 형삭
const_reverse_iterator : const 역 반복자 형식
difference_type : 두 반복자 차이의 형식
iterator : 반복자 형식
pointer : value_type* 형삭
reference : value_type& 형삭
reverse_iterator : 역 반복자 형식
size_type : 첨자(index)나 원소의 개수 형식
value_type : 원소의 형식
Deque의 특징
- 배열 기반 컨테이너
- 임의 접근 반복자
- 여러 개의 메모리 블록을 할당 한 후, 하나의 블록처럼 보이게 하는 정책을 사용
- 원소의 추가 시, 일정한 크기의 새로운 메모리 블록을 할당
List 컨테이터
템플릿 컨테이너
template<typename T, typename Allocator = allocator<T>>
인터페이스
list lt : 빈 컨테이너
list lt(n) : n개의 원소를 갖는 기본값으로 초기화 된 컨테이너
list lt(n, x) : n개의 원소를 x값으로 초기화 한 컨테이너
list lt(lt2) : lt2를 복사(복사 생성자)
list lt(b, e) : 반복자[b, e)로 초기화 된 원소를 가짐
lt.assign(n, x) : x값으로 n개의 원소를 할당
lt.assign(b, e) : 반복자 [b,e)로 할당
lt.back() : 마지막 원소를 참조(const, 비 const 버전)
p = lt.begin() : p는 첫 원소를 가리키는 반복자(const, 비 const 버전)
lt.clear() : 모든 원소를 제거
lt.empty() : lt가 비었는지 확인
p = lt.end() : p는 끝 원소를 표시하는 반복자(const, 비 const 버전)
q = lt.erase(p) : p가 가리키는 원소를 제거하고 q는 다음 원소를 가리킴
q = lt.erase(b, e) : 반복자[b,e)의 모든 원소를 제거, q는 다음 원소
lt.front() : 첫 번째 원소를 참조(const, 비 const 버전)
q = lt.insert(p, x) : p가 가리키는 위치에 x원소를 삽입, q는 삽입한 원소를 가리키는 반복자
lt.insert(p, n, x) : p가 가리키는 위치에 n개의 x원소를 삽입
lt.insert(p, b, e) : p가 가리키는 위치에 반복자 [b, e)를 삽입
x = lt_max_size() : x는 최대 원소의 개수(메모리의 크기)
lt.merge(lt2) : lt2를 lt로 합병 정렬한다(오름차순 : less)
lt.merge(lt2, pred) : lt2를 lt로 합병 정렬, pred(조건자)를 기준으로 합병(pred는 이항 조건자)
lt.pop_back() : 마지막 원소를 제거
lt.pop_front() : 첫 원소를 제거
lt.push_back(x) : 끝에 x를 추가
lt.push_front(x) : 앞에 x를 추가
p = lt.rbegin() : p는 역 순차열의 첫 원소를 가리키는 반복자(const, 비 const 버전)
lt.remove(x) : x 원소를 모두 제거
lt.remove_if(pred) : pred(단항 조건자)가 '참'인 모든 원소를 제거
p = lt.rend() : p는 역 순차열의 끝 원소를 가리키는 반복자(const, 비 const 버전)
lt.resize(n) : 크기를 n으로 변경하고 확장 시 기본값으로 초기화
lt.resize(n, x) : 크기를 n으로 변경하고 확장 시 x값으로 초기화
lt.reverse() : 순차열을 뒤집음
lt.size() : lt원소의 개수
lt.sort() : lt의 모든 원소를 오름차순(less)로 정렬
lt.sort(pred) : lt의 모든 원소를 pred(조건자)를 기준으로 정렬(pred는 이항 조건자)
lt.splice(p, lt2) : p가 가리키는 위치에 lt2의 모든 원소를 잘라 붙임
lt.splice(p, lt2, q) : p가 가리키는 위치에 lt2의 q가 가리키는 원소를 잘라 붙임
lt.splice(p, lt2, b, e) : p가 가리키는 위치에 lt2의 순차열[b, e)를 잘라 붙임
lt.swap(lt2) : lt와 lt2를 swap
lt.unique() : 인접한 원소의 값이 같다면 유일한 원소의 순차열로 만듦
lt.unique(pred) : 인접한 원소가 pred(이항 조건자)의 기준에 맞다면 유일한 원소의 순차열로 만듦
<list의 템플릿 특수화(bool타입)>
lt == lt2 : 1과 2의 모든 원소가 같은가?
lt != lt2 : 1과 2에서 다른 원소가 하나라도 있는가?
lt < lt2 : 문자열 비교처럼 1이 2보다 작은가?
lt <= lt2 : 문자열 비교처럼 1이 2보다 작거나 같은가?
lt > lt2 : 문자열 비교처럼 1이 2보다 큰가?
lt >= lt2 : 문자열 비교처럼 1이 2보다 크거나 같은가?
멤버 형식
allocator_type : 메모리 관리자 형식
const_iterator : const 반복자 형식
const_pointer : const value_type* 형삭
const_reference : const value_type& 형삭
const_reverse_iterator : const 역 반복자 형식
difference_type : 두 반복자 차이의 형식
iterator : 반복자 형식
pointer : value_type* 형삭
reference : value_type& 형삭
reverse_iterator : 역 반복자 형식
size_type : 첨자(index)나 원소의 개수 형식
value_type : 원소의 형식
List의 특징
- 노드 기반 컨테이너
- 각 노드는 앞쪽, 뒤쪽 노드와 연결된 형태로 이중 연결 리스트(doubly linked_list)
- at()과 [] 연산자가 없음
- 양방향 반복자 제공