std에서 지원하는 기본적인 이중연결리스트 이다.

스크린샷 2022-07-01 오후 8.58.18.png

기본적인 형태는 위와 같음

Allocator는 메모리 할당 방식을 의미하는데 default값인 std::allocator를 지원함

고로 반환형식인 T만 신경써주면 됨

특징

  1. 어느 위치라도 삽입,제거가 상수시간인 O(1)로 진행됨
  2. 벡터의 []처럼 랜덤한 위치에 인덱스접근은 할 수 없음.
  3. begin()이나 end()로 위치를 정하거나 ++,—연산자들로 이동해야함
  4. #include <list>에 정의되어있음

std::list의 함수목록

스크린샷 2022-07-01 오후 9.07.13.png

c가 붙은 함수는 const임

splice()함수의 경우 인자로 받은 리스트의 원소는 사라지거나 감소

l2.splice(iterator,l1) 두가지 인자를 받음.

l2의 iterator위치에 l1의 원소를 이동

이동 후엔 l1의 원소는 사라짐


#include <iostream>
#include <list>
using namespace std;
int main()
{
    list<int> l1; // empty list
    l1.push_back(10);
    l1.push_back(20);

    list<int> l2{10, 20, 30, 40};

    l2.splice(l2.end(), l1); // l1의 모든 원소가 이동 -> l1의 원소 전부 사라짐
    l2.sort();               // 10,10,20,20,30,40
    l2.unique();             // 10,20,30,40

    for (auto a : l2)
    {
        cout << a << "\\n";
    }
}