c++

[C++ STL 시리즈] 2편: list 사용법

개발에대해 2025. 9. 19. 16:21

 

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)
메모리 효율 연속적

 

반응형