C++ STL 시리즈 2편: list 사용법
지난 글에서는 STL의 기본 개념과 vector 사용법을 다뤘습니다.
이번 글에서는 **STL의 list 컨테이너**를 자세히 살펴보겠습니다.
list는 **이중 연결 리스트(Doubly Linked List)** 구조로, 삽입과 삭제가 빈번한 상황에서 vector보다 효율적입니다.
1. list란?
list는 STL 컨테이너 중 하나로, 메모리 상에서 요소가 연결 리스트 형태로 저장됩니다.
vector와 달리 **임의 접근(Random Access)은 불가능**하지만,
삽입과 삭제가 리스트 내 어느 위치에서든 O(1) 시간에 수행될 수 있습니다.
list 선언과 초기화
#include <list>
#include <iostream>
using namespace std;
int main() {
list l; // 빈 리스트 선언
list l2 = {1, 2, 3}; // 초기화
}
요소 삽입 및 삭제
l.push_back(10); // 끝에 요소 추가
l.push_front(5); // 앞에 요소 추가
l.pop_back(); // 마지막 요소 삭제
l.pop_front(); // 첫 요소 삭제
순회 및 출력
// 반복자 사용
for(list::iterator it = l.begin(); it != l.end(); ++it)
cout << *it << " ";
// C++11 이후 range-based for
for(int n : l)
cout << n << " ";
2. list 유용한 함수
insert()
: 특정 위치에 요소 삽입erase()
: 특정 위치 요소 삭제merge()
: 두 리스트 합치기 (정렬 필요)sort()
: 리스트 정렬remove()
: 특정 값 제거unique()
: 연속 중복 요소 제거
3. vector와 list 비교
항목 | vector | list |
---|---|---|
구조 | 동적 배열 | 이중 연결 리스트 |
임의 접근 | O(1) | 불가능 (순회 필요) |
삽입/삭제 | 끝 제외 O(1), 중간 O(n) | 어디서든 O(1) |
메모리 효율 | 연속적 |
반응형
'c++' 카테고리의 다른 글
[C++ STL 시리즈] 4편: stack과 queue 사용법 (0) | 2025.09.20 |
---|---|
[C++ STL 시리즈] 3편: deque 사용 (1) | 2025.09.20 |
[C++ STL 시리즈] 1편: STL 개요 및 vector 사용법 (0) | 2025.09.19 |
Visual Studio C++ MFC CRect 사용법 (0) | 2025.09.18 |
Visual Studio C++ SendMessage 사용법 정리 (0) | 2025.09.18 |