list
**이중 연결 리스트(doubly linked list)**로 구현된 STL 컨테이너입니다. 요소의 삽입, 삭제가 빠르며 순차적인 데이터 처리에 적합합니다.
list의 특징
- 이중 연결 리스트 기반:
- 각 노드가 이전과 다음 노드에 대한 포인터를 포함.
- 양방향으로 순회 가능.
- 삽입/삭제 속도:
- 리스트의 임의 위치에서 요소를 삽입/삭제하는 작업이 O(1).
- 단, 특정 위치를 찾는 작업(탐색)은 O(n).
- 연속적인 메모리를 사용하지 않음:
- 메모리가 단편화될 수 있지만, 크기 조정 시 전체 이동이 필요하지 않음.
- 임의 접근(Random Access) 불가능:
- 배열이나 std::vector처럼 인덱스로 접근할 수 없으며, 순차적으로 탐색해야 함.
사용법
1. #include <list>
- std::list를 사용하려면 반드시 헤더 파일을 포함해야 함
2. 선언 및 초기화
3. 주요 멤버 함수
std::list는 다양한 메서드를 제공하여 리스트를 조작할 수 있습니다. 주요 함수는 다음과 같습니다.
기능 | 설명 |
삽입/삭제 | |
push_back(val) | 리스트의 끝에 요소를 추가. |
push_front(val) | 리스트의 앞에 요소를 추가. |
pop_back() | 리스트의 끝 요소를 제거. |
pop_front() | 리스트의 앞 요소를 제거. |
insert(it, val) | 지정된 iterator 위치에 요소를 삽입. |
erase(it) | 지정된 iterator 위치의 요소를 제거. |
clear() | 리스트의 모든 요소를 제거. |
resize(n, val) | 리스트의 크기를 n으로 변경. (필요 시 val로 초기화) |
emplace(it, val) | 지정된 위치에 요소를 생성하여 삽입 (생성자 호출 포함). |
emplace_back(val) | 리스트 끝에 요소를 생성하여 삽입. |
emplace_front(val) | 리스트 앞에 요소를 생성하여 삽입. |
remove(val) | 리스트에서 특정 값을 가진 모든 요소를 제거. |
접근 및 탐색 | |
front() | 첫 번째 요소를 반환. |
back() | 마지막 요소를 반환. |
begin() | 리스트의 첫 번째 요소를 가리키는 iterator 반환. |
end() | 리스트의 마지막 다음 요소(iterator) 반환. |
rbegin() | 리스트의 끝부터 역순으로 순회하는 iterator 반환. |
rend() | 리스트의 첫 번째 이전 요소(iterator) 반환. |
리스트 관리 | |
size() | 리스트의 현재 크기를 반환. |
empty() | 리스트가 비어 있으면 true, 아니면 false 반환. |
swap(other) | 다른 리스트와 현재 리스트의 내용을 교환. |
splice(it, other) | 다른 리스트 other의 내용을 현재 리스트에 삽입. |
merge(other) | 두 리스트를 합치고 정렬. |
sort() | 리스트의 요소를 정렬. |
reverse() | 리스트의 요소를 역순으로 정렬. |
unique() | 중복된 요소를 제거. |
'C++ > STL 컨테이너' 카테고리의 다른 글
STL 컨테이너 - queue (0) | 2025.01.07 |
---|---|
STL 컨테이너 - stack (0) | 2025.01.07 |
STL 컨테이너 - vector (0) | 2025.01.07 |
STL 컨테이너 - array (0) | 2025.01.07 |
STL 컨테이너 - map (0) | 2024.11.25 |