posted by 구로보루 2018. 4. 2. 21:20

 list 컨테이너는 이중 연결 리스트로 된 가변 길이 순차열이다. vector, deque와는 다르게 어느 위치라도 O(1)의 시간으로 원소를 삽입할 수 있다.

 

list<T>

T -> 원소의 타입

 

 멤버 함수

 begin

 시작 반복자 반환

 end

 끝 반복자 반환

 rbegin

 역방향 시작 반복자 반환

 rend

 역방향 끝 반복자 반환

 cbegin

 const 시작 반복자 반환

 cend

 const 끝 반복자 반환

 crbegin

 const 역방향 시작 반복자 반환

 crend

 const 역방향 끝 반복자 반환

 assign

 내용을 새 원소들로 대체 

 operator=

 원소들을 다른 컨테이너의 원소들이나 초기화 리스트로 대체

 size

 원소들의 실제 개수 반환

 max_size

 원소들의 최대 개수 반환

 resize

 원소들의 개수 변경

 empty

 원소가 없으면 true 반환

 front

 첫 번째 원소에 대한 참조 반환

 back

 마지막 원소에 대한 참조 반환

 push_back

 순차열 끝에 원소 추가

 push_front

 순차열 시작에 원소 추가

 emplace

 지정된 위치 앞에 내부에서 원소를 생성

 emplace_back

 순차열 끝에 내부에서 원소를 생성

 emplace_front

 순차열 시작에 내부에서 원소를 생성

 insert

 지정된 위치 앞에 하나 이상의 원소를 추가

 pop_back

 순차열의 끝에서 원소를 제거

 pop_front

 순차열의 시작에서 원소를 제거

 reverse

 원소들의 순서를 거꾸로 바꿈

 erase

 지정된 위치에서 원소 하나 또는 범위로 지정된 원소 제거

 remove

 전달된 인수와 일치하는 원소들을 제거

 remove_if

 단항 조건자 인수가 true를 반환하는 원소들을 제거

 unique

 연속되어 중복된 원소를 제거

 clear

 모든 원소를 제거하고 size를 0으로

 swap

 두 컨테이너의 모든 원소 교환

 sort

 원소 정렬

 merge

 두 컨테이너 병합 (모두 오름차순 정렬된 상태)

 splice

 지정된 위치 앞에 타입이 같은 다른 리스트 삽입

 

* insert, emplace : insert의 경우 원소를 삽입하기위해 임시로 객체를 생성하지만 emplace의 경우 임시로 객체를 생성하지 않는다.

 

* sort : 인수가 없을 경우 오름차순으로 정렬한다. 인자로 비교하는 조건을 정의한 람다식이나 함수 객체를 인수로 받을 수 있다. std::greater<T>()를 인수로 전달하면 내림차순 정렬.

 

* merge : 모든 리스트의 원소들을 오름차순으로 병합한다.

'공부 > C++(STL)' 카테고리의 다른 글

stack 컨테이너  (0) 2018.04.05
forward_list 컨테이너  (0) 2018.04.03
deque 컨테이너  (0) 2018.03.30
vector 컨테이너  (0) 2018.03.29
array 컨테이너  (0) 2018.03.23
posted by 구로보루 2018. 3. 30. 13:49

 순차컨테이너로 순차열에 원소를 추가하거나 삭제할 수 있다. vector가 순차열의 끝에 새로운 원소를 추가하거나 삭제한다면 deque는 시작과 끝에서 효율적으로 추가하거나 삭제할 수 있다.

 

deque<T>

T -> 원소의 타입

 

 멤버 함수

 begin

 시작 반복자를 반환

 end

 끝 반복자를 반환

 rbegin

 역방향 시작 반복자를 반환

 rend

 역방향 끝 반복자를 반환

 cbegin

 const 시작 반복자를 반환

 cend

 const 킅 반복자를 반환

 crbegin

 const 역방향 시작 반복자를 반환

 crend

 const 역방향 끝 반복자를 반환

 assign

 내용을 새 원소들로 대체한다.

 operator=

 원소들을 타입이 같은 다른 컨테이너의 원소들이나 초기화 리스트로 대체

 size

 원소들의 실제 개수 반환

 max_size

 원소들의 최대 개수 반환

 empty

 원소가 없으면 true 반환

 resize

 원소들의 실제 개수 변경
 shrink_to_fit

 원소들의 실제 개수에 필요한 메모리를 줄임

 front

 첫 번째 원소 참조반환

 back

 마지막 원소 참조반환

 operator[]

 원소를 인덱스로 접근

 at

 원소를 인덱스로 접근(경계검사)

 push_back  순차열의 끝에 원소를 추가
 insert

 지정된 위치에 원소 하나 또는 원소들을 추가

 emplace

 지정된 위치에 내부에서 원소를 생성해 추가

 emplace_back

 순차열 끝에 내부에서 원소를 생성해 추가

 pop_back

 순차열 끝의 원소를 제거
 erase  원소 하나 혹은 범위로 지정된 원소 제거
 clear

 모든 원소를 제거하고 size를 0으로 변환

 swap

 두 컨테이너의 모든 원소를 교환 

 push_front

 순차열의 시작에 원소를 추가

 pop_front

 순차열의 시작에 원소를 제거

 

* 경계검사 : 인수의 범위를 벗어난 인덱스 값을 확인하고 벗어난 값이면 std::out_of_range 예외를 발생한다.

 

* insert, emplace : insert의 경우 원소를 삽입하기위해 임시로 객체를 생성하지만 emplace의 경우 임시로 객체를 생성하지 않는다.

 

* push_front, pop_front : Double ended Queue 자료구조의 특성상 순차열의 양 끝에 선입선출방식의 구현을 위해 정의되어 있다.

'공부 > C++(STL)' 카테고리의 다른 글

forward_list 컨테이너  (0) 2018.04.03
list 컨테이너  (0) 2018.04.02
vector 컨테이너  (0) 2018.03.29
array 컨테이너  (0) 2018.03.23
람다 식(익명함수)  (0) 2018.03.01
posted by 구로보루 2018. 3. 29. 16:12

 array와 비슷한 순차컨테이너로 순차열에 원소를 추가하거나 삭제할 수 있다. 할당된 용량을 초과한다면 추가공간이 자동으로 할당된다.

 

vector<T>

T -> 원소의 타입

 

 멤버 함수

 begin

 시작 반복자를 반환

 end

 끝 반복자를 반환

 rbegin

 역방향 시작 반복자를 반환

 rend

 역방향 끝 반복자를 반환

 cbegin

 const 시작 반복자를 반환

 cend

 const 킅 반복자를 반환

 crbegin

 const 역방향 시작 반복자를 반환

 crend

 const 역방향 끝 반복자를 반환

 assign

 내용을 새 원소들로 대체한다.

 operator=

 원소들을 타입이 같은 다른 컨테이너의 원소들이나 초기화 리스트로 대체

 size

 원소들의 실제 개수 반환

 max_size

 원소들의 최대 개수 반환

 capacity

 메모리에 할당된 원소들의 개수 반환

 empty

 원소가 없으면 true 반환

 resize

 원소들의 실제 개수 변경
 shrink_to_fit

 원소들의 실제 개수에 필요한 메모리를 줄임

 front

 첫 번째 원소 참조반환

 back

 마지막 원소 참조반환

 operator[]

 원소를 인덱스로 접근

 at

 원소를 인덱스로 접근(경계검사)

 push_back  순차열의 끝에 원소를 추가
 insert

 지정된 위치에 원소 하나 또는 원소들을 추가

 emplace

 지정된 위치에 내부에서 원소를 생성해 추가

 emplace_back

 순차열 끝에 내부에서 원소를 생성해 추가

 pop_back

 순차열 끝의 원소를 제거
 erase  원소 하나 혹은 범위로 지정된 원소 제거
 clear

 모든 원소를 제거하고 size를 0으로 변환

 swap

 두 컨테이너의 모든 원소를 교환

 data

 원소들을 담고 있는 내부 배열에 대한 포인터 반환

 

* 경계검사 : 인수의 범위를 벗어난 인덱스 값을 확인하고 벗어난 값이면 std::out_of_range 예외를 발생한다.

 

* insert, emplace : insert의 경우 원소를 삽입하기위해 임시로 객체를 생성하지만 emplace의 경우 임시로 객체를 생성하지 않는다.

 

* capacity, size : 메모리를 추가 할당하지 않아도 저장할 수 있는 원소의 개수이고 size는 실제로 갖고 잇는 원소의 개수로 크기가 용량까지 다 찼을 경우 새롭게 원소를 추가하면 용량도 일정량 더 늘어나게 된다. 벡터에 추가되는 용량으로 인해 순차열의 끝에서 추가나 삭제를 하는경우가 더 효율적이다.

'공부 > C++(STL)' 카테고리의 다른 글

list 컨테이너  (0) 2018.04.02
deque 컨테이너  (0) 2018.03.30
array 컨테이너  (0) 2018.03.23
람다 식(익명함수)  (0) 2018.03.01
스마트 포인터  (0) 2018.02.23