#include <list>
using namespace std;
list<[type]> [name]
// 비어있는 정수형 타입 list li1를 생성
list<int> li1;
// 기본값으로 초기화된 10개의 원소를 가지는 list li2 생성
list<int> li2(10);
// 'A'로 초기화된 5개의 원소를 가지는 list li3 생성
list<char> li3(5, 'A');
// 'A', 'B', 'C' 원소를 가지는 list li4 생성
list<char> li4 = { 'A', 'B', 'C' };
list<int> li1(5, 7);
list<int> li2 = { 7, 7, 7, 7, 7 };
list<int> li3 = { 7, 7, 7, 8 };
if (li1 == li2) // true
cout << "동일한 list";
if (li2 < li3) // true
cout << "d3이 d2보다 큰 list";
1) element access & capacity
function | description |
---|---|
li.front() | 첫번째 원소 반환 |
li.back() | 마지막 원소 반환 |
li.size() | list l의 크기 반환 |
li.empty() | 비어있으면 true, 그렇지 않으면 false 반환 |
list<int> li1 = { 10, 20, 30, 40, 50 };
list<int> li2;
cout << li1.front(); // 10
cout << li1.back(); // 50
cout << li1.size(); // 5
cout << li2.size(); // 0
if (li2.empty()) // true
cout << "li2 size is 0";
2) iterators
function | description |
---|---|
li.begin() | 첫번째 원소를 가리키는 iterator |
li.end() | 마지막 원소의 다음을 가리키는 iterator |
li.rbegin() | 마지막 원소를 가리키는 iterator |
li.rend() | 첫번째 원소의 이전을 가리키는 iterator |
iterator(반복자) : 컨테이너에 저장된 요소를 반복적으로 순회하여 각 요소에 접근할 수 있도록 하는 객체
list<int> li = { 10, 20, 30, 40, 50, 60, 70, 80 };
list<int>::iterator iter;
for (iter = li.begin(); iter != li.end(); iter++)
{
cout << *iter << " "; // output : 10 20 30 40 50 60 70 80
}
list<int>::reverse_iterator r_iter;
for (r_iter = li.rbegin(); r_iter != li.rend(); r_iter++)
{
cout << *r_iter << " "; // output : 80 70 60 50 40 30 20 10
}
3) modifiers (수정)
function | description |
---|---|
li.push_front(x) | 원소 x를 첫번째 원소 앞에 추가 |
li.push_back(x) | 원소 x를 마지막 원소 뒤에 추가 |
li.pop_front() | 첫번째 원소 제거 |
li.pop_back() | 마지막 원소 제거 |
li.insert(iter, x) | 원소 x를 iter 위치에 삽입 |
li.insert(iter, n, x) | n개의 원소 x를 iter 위치에 삽입 |
li.erase(iter) | iter 위치의 원소 제거 |
li.erase(iter1, iter2) | iter1 부터 iter2 이전까지 위치의 원소 제거 |
li.clear() | 모든 원소 제거 |
list<int> li = { 10, 20, 30 };
li.push_front(40); // 40 10 20 30
li.pop_back(); // 40 10 20
li.push_back(50); // 40 10 20 50
li.pop_front(); // 10 20 50
list<int>::iterator iter = li.begin();
li.insert(iter, 60); // 60 (10) 20 50
iter++; // 60 10 (20) 50
li.insert(iter, 3, 70); // 60 10 70 70 70 (20) 50
iter--; // 60 10 70 70 (70) 20 50
iter = li.erase(iter); // 60 10 70 70 (20) 50
iter--; // 60 10 70 (70) 20 50
iter = li.erase(li.begin(), iter); // (70) 20 50
4) operations (연산)
function | description |
---|---|
li.remove(x) | 리스트 내의 원소 x를 모두 제거 |
li.remove_if(pred) | pred 함수의 반환 값이 true인 원소 모두 제거 |
li.sort(comp) | comp 함수 기준으로 정렬 (default: 오름차순) |
li.unique() | 연속으로 중복된 원소들을 모두 제거 |
list<int> li = { 0, 50, 20, 30, 30, -10, -20, 30, 50, 0, -40, 0, 20 };
li.remove(0); // 50 20 30 30 -10 -20 30 50 -40 20
li.remove_if([](int x)
{ return x < 0; }); // 50 20 30 30 30 50 20
li.sort(); // 20 20 30 30 30 50 50
li.unique(); // 20 30 50