시퀀스 컨테이너 (sequence container)의 일종이므로 순서를 유지하는 구조
노드 기반 컨테이너
이중 연결 리스트(doubly linked list)
vector, deque과는 다르게 멤버 함수 에서 정렬(sort, merge)
, 이어붙이기(splice)
가 있습니다.
원소를 탐색할때, 임의접근 반복자
( at()
, []
) 는 불가능하고, 양방향 반복자
( ++
, --
) 를 이용해서 탐색
멤버 함수를 이용해서 list 양 끝에서 삽입, 삭제가 가능
멤버 함수를 통해서 노드 중간에서도 삽입, 삭제가 가능
#include <list>
list<[Data Type] > [변수 이름];
list<int> lt1;
list<string> lt2;
맨 앞의 원소를 반환 ,참조
li.front()
맨 뒤의 원소를 반환, 참조
li.back()
맨 앞의 원소를 가리키는 iterator를 반환
li.begin()
맨 마지막의 다음 원소를 가리키는 iterator 반환
li.end()
뒤에서부터 순차적으로 접근할 때 사용
뒤집었을때 첫번째
li.rbegin()
뒤에서부터 순차적으로 접근할때 사용
뒤집었을때 마지막
li.rend()
꼬리로 원소 삽입
li.push_back(k)
머리로 원소 삽입
li.push_front(k)
맨 마지막 원소 제거
li.pop_back()
맨 앞 원소 제거
li.pop_front()
iter
가 가리키는 위치에 원소 삽입
삽입한 원소를 가리키는 iterator 반환
삽입하면 나머지들은 뒤로 밀림 (왼쪽에 삽입된다는 뜻)
li.insert(iter,k)
iter
가 가리키는 원소를 삭제
삭제한 원소의 다음 원소를 가리키는 iterator 반환
li.erase(iter)
원소의 개수 반환
li.size()
k와 같은 원소를 모두 제거
li.remove(k)
단항 조건자 predicate
에 해당하는
원소를 모두 제거
li.remove_if(predicate)
원소들의 순차열을 뒤집음
li.reverse()
모든 원소를 오름차순(default)으로 정렬
파라미터로 정렬 기준 받아서 그 기준으로 정렬
(linked list setSortRule
이랑 똑같음)
li.sort()
li1
과 li2
를 바꿈
li2.swap(li1)
li2
에서 iter2
가 가리키는 곳에
li1
의 모든 원소를 잘라 붙임
li2.splice(iter2,li1)
li2.splice(iter2,li1,iter1)
인접한 원소가 같으면 유일하게 만듬 (중복 다 삭제)
li.unique()
li1
를 li2
내부로 합병 정렬
기준은 오름차순
두번째 파라미터로 정렬 기준 받을 수 있음
li2.merge(li1)