[C++] STL - 리스트(List)
리스트(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
li1 과 li2 를 바꿈
li2.swap(li1)
splice
li2에서 iter2가 가리키는 곳에
li1의 모든 원소를 잘라 붙임
li2.splice(iter2,li1)
li2.splice(iter2,li1,iter1)
unique
인접한 원소가 같으면 유일하게 만듬 (중복 다 삭제)
li.unique()
merge
li1 를 li2 내부로 합병 정렬
기준은 오름차순
두번째 파라미터로 정렬 기준 받을 수 있음
li2.merge(li1)
💡 참고 포스팅
C++ STL - linked list
[C++] list container 정리 및 사용법
Author And Source
이 문제에 관하여([C++] STL - 리스트(List)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youhyeoneee/C-STL-리스트list저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)