[C++ STL] List
2021. 4. 13. 21:53
1. List ?
- 이중 연결 리스트 (doubly linked list)
- Sequence container로 순서를 유지하는 구조
- vector, deque와 다르게 멤버 함수로 정렬(sort, merge), 이어 붙이기(splice) 가능
- 임의접근 반복자(at) 사용 불가, 양방향 반복자 사용 가능
2. 사용법
list 생성자
#include <list>
list<int> lt;
list<int> lt(7); // 0으로 초기화 된 원소 7개를 가진 list 생성
list<int> lt(3, 5); // 5로 초기화 된 원소 3개를 가진 list 생성
list<int> lt1(lt2); // l1을 l2로 복사
list 멤버함수
int x;
lt.assign(3, 4); // list에 4로 초기화된 3개의 원소 할당
lt.front();
lt.back();
lt.begin();
lt.end();
// 역순으로 접근
lt.rbegin();
lt.rend();
lt.push_back(x); // 뒤쪽으로 원소 삽입
lt.push_front(x); // 앞쪽으로 원소 삽입
lt.pop_back(x); // 마지막 원소 제거
lt.pop_front(); // 첫번째 원소를 제거
lt.insert(iter, x);
lt.erase(iter);
lt.size();
//100과 200사이이면 true
bool predicate(int num){
return num>=100 && num<=200;
}
lt.remove(x); // x와 같은 원소 모두 제거
lt.remove_if(predicate); // predicate 함수가 참이면 제거
lt.reverse(); // 원소 순차열 반전
lt.sort(); // 오름차순 정렬
lt.unique(); // 인접한 원소가 같으면 중복 제거 (sort를 먼저 거쳐야 유용)
lt2.swap(lt1);
lt2.splice(iter2, lt1); // lt2에서 iter2이 가리키는 곳에 lt1의 모든 원소를 잘라 붙임
lt2.splice(iter2, lt1, iter1); // lt2의 iter2가 가리키는 곳에 lt1의 iter1이 가리키는 원소를 잘라 붙임
lt2.splice(iter2, lt1, first1, last1); // lt2의 iter2가 가리키는 곳에 lt1의 [first1 , last1) 까지의 원소를 잘라 붙임
lt2.merge(lt1); // lt1을 lt2내부로 합병 정렬 (default는 오름차순)
'C++' 카테고리의 다른 글
[C++ STL] 최소값, 최대값 구하기 - min, max, min_element, max_element (0) | 2021.04.16 |
---|---|
[C++ STL] Sort (0) | 2021.04.13 |
[C++] 표준 템플릿 라이브러리(STL: Standard Template Library) (0) | 2021.04.13 |
[C++ STL] find (0) | 2021.04.10 |
[C++ STL] Set (0) | 2021.04.10 |