[STL] list 컨테이너

list컨테이너

노드 기반의 컨테이너로, 원소가 노드 단위로 저장되며 이중 연결 리스트로 구현됨.

 

list 의 주요 인터페이스

템플릿 형식  
template <template T, typename Allocator = allocator<T> >
class list
T는 list컨테이너 원소의 형식

 

생성자

생성자
list lt lt는 빈 컨테이너
list lt(n) 0원소 n개로 초기화된 컨테이너
list lt(n, x) x원소 n개로 초기화된 컨테이너
list lt(lt2) lt는 lt2 컨테이너의 복사본 (복사 생성자 호출)
list lt(b,2) lt는 반복자 구간 [b, e)로 초기화된 원소를 같는다.

 

멤버함수

멤버함수
lt.assign(n,x) lt에 x값으로 n개의 원소를 할당한다
lt.assign(b,e) lt에 반복자 b부터 e까지 시퀀스 구간으로 할당한다.
lt.back() lt에 마지막 원소를 참조한다.
p=lt.begin() p는 lt의 첫 원소를 가리키는 반복자
lt.clear() lt의 모든 원소를 제거한다.
lt.empty() lt가 비어있는지 확인
p=lt.end() p는 lt의 끝을 표시하는 반복자 
q=lt.erase(p) lt의 p가 가리키는 원소를 제거하고 q에는 다음 원소를 넣는다.
q=lt.erase(b,e) lt의 반복자 b부터 e 까지의 시퀀스 구간을 제거하고 q는 다음 원소를 가리킨다.
lt.front() lt의 첫번째 원소를 참조한다.
q=lt.insert(p,x) lt에 p가 가리키는 위치에 x를 삽입한다. q는 삽입한 원소를 가리키는 반복자. 
lt.insert(p,n,x) lt에 p가 가리키는 위치에 x를 n개 삽입한다.
lt.insert(p,b,e) lt에 p가 가리키는 위치에 반복자 b부터 e까지의 시퀀스 구간원소를 삽입한다.
x=lt.max_size() x는 lt가 담을 수 있는 최대 원소의 개수다.(메모리 크기)
lt.merge(ltl2) lt2를 lt로 합병 정렬한다(오름차순: less)
lt.merge(lt2,pred) lt2를 lt로 합벙 정렬한다.(pred: 사용자 정의 조건자)
lt.pop_back() lt에 마지막 원소를 제거한다.
lt.pop_front() lt의 첫 원소를 제거한다.
lt.push_back(x) lt에 x를 가장 뒤에 삽입한다.
lt.push_front(x) lt의 앞에 x를 삽입한다.
p=lt.rbegin() p는 lt의 역 순차열의 첫번째 원소를 가리키는 반복자(reverse begin의 줄임말로 end()와 같다)
lt.remove(x) x원소를 모두 제거한다.
lt.remove_if(pred) pred(사용자 정의 조건자)가 참인 모든 원소를 제거한다.
p=lt.rend() p는 lt의 역 순차열의 마지막 원소를 가리키는 반복자(reverse end의 줄임말로 begin()와 같다)
lt.resize(n) lt를 n의 크기로 변경하고 확장되는 공간의 값을 기본값(0)으로 초기화한다. (작아지면 삭제됨)
lt.resize(n, x) lt를 n의 크기로 변경하고 확장되는 공간의 값을 x값으로 초기화한다. (작아지면 삭제됨)
lt.reverse() lt의 순차열을 뒤집는다.
lt.size( ) 원소의 갯수
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(ltl2) lt와 lt2를 swap한다.
lt.unique() 인접한 원소의 값이 같다면 유일한 원소의 순차열로 만든다. 띄어있는 중복 원소는 삭제x
lt.unique(pred) 인접한 원소가 pred(이항 조건자)의 기준에 맞다면 유일한 원소의 순차열로 만든다.

 

연산자

연산자
lt1 == lt2 lt1과 lt2의 모든 원소가 같은가 (bool 형식)
lt1 != lt2 lt1과 lt2의 모든 원소 중 하나라도 다른 원소가 있는가? (bool 형식)
lt1 < lt2 lt2가 lt1보다 하나라도 큰 원소가 있는가? (bool 형식)
lt1 <= lt2 lt2가 lt1보다 하나라도 같거나 큰 원소가 있는가? (bool 형식)
lt1 > lt2 lt1이 lt2보다 하나라도 큰 원소가 있는가? (bool 형식)
lt1 >= lt2 lt1이 lt2보다 하나라도 같거나 큰 원소가 있는가? (bool 형식)

 

멤버형식

멤버형식
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 원소의 형식

'C++ > STL' 카테고리의 다른 글

[STL] Set 컨테이너  (0) 2025.03.22
[STL] 6장 문제풀이  (0) 2025.03.17
[STL] Deque 컨테이너  (0) 2025.03.15
[STL] Vector 컨테이너  (0) 2025.03.10
[STL] 5장 문제풀이  (0) 2025.03.08