[C++] STL - 리스트(List)

4204 단어 stlcppcpp

리스트(List)란?

  • 시퀀스 컨테이너 (sequence container)의 일종이므로 순서를 유지하는 구조

  • 노드 기반 컨테이너

  • 이중 연결 리스트(doubly linked list)

  • vector, deque과는 다르게 멤버 함수 에서 정렬(sort, merge), 이어붙이기(splice) 가 있습니다.

  • 원소를 탐색할때, 임의접근 반복자 ( at(), [] ) 는 불가능하고, 양방향 반복자 ( ++, -- ) 를 이용해서 탐색

  • 멤버 함수를 이용해서 list 양 끝에서 삽입, 삭제가 가능

  • 멤버 함수를 통해서 노드 중간에서도 삽입, 삭제가 가능

2. 선언

  • 헤더파일
#include <list>
  • list 선언
    list<[Data Type] > [변수 이름];
list<int> lt1;
list<string> lt2;

3. 리스트 멤버 함수

front

맨 앞의 원소를 반환 ,참조

li.front()

back

맨 뒤의 원소를 반환, 참조

li.back()

begin

맨 앞의 원소를 가리키는 iterator를 반환

li.begin()

end

맨 마지막의 다음 원소를 가리키는 iterator 반환

li.end()

rbegin

뒤에서부터 순차적으로 접근할 때 사용
뒤집었을때 첫번째

li.rbegin()

rend

뒤에서부터 순차적으로 접근할때 사용
뒤집었을때 마지막

li.rend()

push_back

꼬리로 원소 삽입

li.push_back(k)

push_front

머리로 원소 삽입

li.push_front(k)

pop_back

맨 마지막 원소 제거

li.pop_back()

pop_front

맨 앞 원소 제거

li.pop_front()

insert

iter 가 가리키는 위치에 원소 삽입
삽입한 원소를 가리키는 iterator 반환
삽입하면 나머지들은 뒤로 밀림 (왼쪽에 삽입된다는 뜻)

li.insert(iter,k)

erase

iter가 가리키는 원소를 삭제

삭제한 원소의 다음 원소를 가리키는 iterator 반환

li.erase(iter)

size

원소의 개수 반환

li.size()

remove

k와 같은 원소를 모두 제거

li.remove(k)

remove_if

단항 조건자 predicate 에 해당하는
원소를 모두 제거

li.remove_if(predicate)

reverse

원소들의 순차열을 뒤집음

li.reverse()

sort

모든 원소를 오름차순(default)으로 정렬
파라미터로 정렬 기준 받아서 그 기준으로 정렬
(linked list setSortRule 이랑 똑같음)

li.sort()

swap

li1li2 를 바꿈

li2.swap(li1)

splice

li2에서 iter2가 가리키는 곳에
li1의 모든 원소를 잘라 붙임

li2.splice(iter2,li1)
li2.splice(iter2,li1,iter1)

unique

인접한 원소가 같으면 유일하게 만듬 (중복 다 삭제)

li.unique()

merge

li1li2 내부로 합병 정렬
기준은 오름차순
두번째 파라미터로 정렬 기준 받을 수 있음

li2.merge(li1)

💡 참고 포스팅

C++ STL - linked list
[C++] list container 정리 및 사용법

좋은 웹페이지 즐겨찾기