본문 바로가기

공부/Standard Template Library (C++ STL)

[C++ STL] List

1. List

- Node기반 컨테이너이다.

- 첫번째 원소와 마지막 원소를 알고 있는 Doubly linked list

- 임의접근이 불가능하다. 순차접근만 가능.

- 연산자("==", "!=", "<", ">", "<=", ">=") 사용 가능.

2. Include

#include <list>

 

3. 선언

std::list<T> name;
std::list<T> name(SizeType listSize); // initialized to default
std::list<T> name(SizeType listSize, T& initialize);
std::list<T> name(list<T> otherList);

namespace std를 사용함.

생성시 초기화 설정 가능.

기존의 list를 복사해서 생성가능.

 

4. function

// list를 초기화하며 할당. 기존에 원소가 있으면 clear함
void assign(list<T> otherList)
void assign(SizeType size, T& initialize)
void assign(Iterator first, Iterator last)

// list의 제일 앞에 새로운 노드 추가
void push_front(T& data)

// list의 제일 뒤에 새로운 노드 추가
void push_back(T& data)

// list의 제일 앞에있는 노드 제거 (반환 X)
void pop_front()

// list의 제일 뒤에있는 노드 제거 (반환 X)
void pop_back()

// list의 제일 앞에있는 원소 반환 (제거 X)
T front()

// list의 제일 뒤에있는 원소 반환 (제거 X)
T back()

// list의 제일 앞에있는 노드를 가리키는 iterator 반환 (제거 X)
iterator begin()

// list의 제일 뒤에있는 노드의 다음 공간을 가리키는 iterator 반환 (제거 X)
iterator end()

// list의 제일 뒤에있는 노드를 가리키는 iterator 반환 (제거 X), 접근순서가 역순
iterator rbegin()

// list의 제일 앞에있는 노드의 이전 공간을 가리키는 iterator 반환 (제거 X), 접근순서가 역순
iterator rend()

// iterator가 가리키는 곳에 원소 삽입, 삽입된 원소를 가리키는 iterator 반환
iterator insert(Iterator ptr, T&& data)
iterator insert(Iterator ptr, const T& data)
iterator insert(Iterator ptr, list<T> otherList)
iterator insert(Iterator ptr, Iterator first, Iterator last)

// iterator가 가리키는 곳에 있는 원소 삭제, 삭제한 원소의 다음 원소를 가리키는 iterator 반환
iterator erase(Iterator ptr)
iterator erase(Iterator first, Iterator last)

// list가 비어있으면 true를 반환
bool empty()

// list에 있는 원소의 개수를 반환
SizeType size()

// data와 같은 원소를 모두 제거
void remove(T& data)

// 단항 조건자 _Pred에 해당하는 원소를 모두 제거
void remove_if(Pr1 _Pred)

// 원소들의 순차열을 뒤집음
void reverse()

// 원소를 기준에 따라 정렬, default = 오름차순
void sort() // 오름차순
void sort(Pr2 _Pred) // Pr2 = 2항 연산자.

// 두 list를 교체
void swap(list<T>& list1, list<T> list2)

// iterator가 가리키는 곳에 인자로 들어온 list의 모든 원소를 삽입
void splice(Iterator ptr, list<T> otherList)

// 인접한 두 원소가 조건에 맞지 않으면 뒤에 있는 원소를 제거. default = 두 노드의 data가 같으면 제거
void unique()
void unique(Pr2 _Pred) // 2항 연산자.

// 인자로 들어온 list를 해당 list에 합병정렬. default = 오름차순
void merge(list<T>& otherList)
void merge(list<T>&& otherList)
void merge(list<T>& otherList, Pr2 _Pred) // 2항연산자.
void merge(list<T>&& otherList, Pr2 _Pred) // 2항연산자.

// T의 생성자에 파라미터를 넘겨서 T객체 생성후 삽입, 반환값은 삽입된 원소를 가리키는 반복자
iterator emplace(const_iterator iter,_Valty&&... _Val) // iter가 가르키는 곳에 삽입
iterator emplace_front(_Valty&&... _Val) // 앞에 삽입
iterator emplace_back(_Valty&&... _Val) // 뒤에 삽입

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

[C++ STL] Set, Multiset  (0) 2019.04.26
[C++ STL] Vector  (0) 2019.04.26
[C++ STL] Deque  (0) 2019.04.26
[C++ STL] Queue  (0) 2019.04.25
[C++ STL] Stack  (0) 2019.04.25