C++ | list 정리
포스트
취소

C++ | list 정리

List

list는 연결-리스트를 구현하는 컨테이너다.

배열, vector와 달리 랜덤 접근이 불가하고 순차적으로 접근해야 한다.

예시

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <list>

int main() {
    std:list<int> ls; // 선언 

    ls.push_back(1);
    ls.push_back(2);
    
    ls.push_front(0);
}

필요 헤더

1
#include <list>

선언

std::list<자료형>

1
2
3
4
5
6
7
8
9
10
11
12
13
// 비어있는 list 생성
list<int> ls;

// 크기 10의 기본값을 초기화된 상태로 생성
// int, char 등 기본 자료형의 경우 0, 클래스의 경우 기본 생성된 객체로 채워짐
list<int> ls(10);

// 크기 10의 5로 초기화된 상태로 생성
list<int> ls(10, 5);

// src의 원소를 복사해 dst를 생성
list<int> src(10, 5);
list<int> sdt(src);

원소 추가 & 삭제

std::list::push_front()

std::list::push_back()

std::list::pop_front()

std::list::pop_back()

리스트의 앞/뒤에 원소를 추가/삭제 한다.

1
2
3
4
5
6
7
8
9
10
11
// 3을 리스트의 처음에 추가 
vec.push_back(3);

// 5를 리스트의 끝에 추가 
vec.push_back(5);

// 리스트의 첫 원소 제거
vec.pop_front();

// 리스트의 마지막 원소 제거
vec.pop_back();

원소 가져오기

std::vector::front()

std::vector::back()

1
2
3
4
5
// 리스트의 처음 원소를 리턴
value = vec.front();

// 리스트의 마지막 원소를 리턴
value = vec.back();

list는 랜덤접근이 불가능하다.

순차 접근

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// loop-range for문을 이용한 순차접근
for (int value : ls) {
    cout << value << endl;
}

// 참조 변수로 받아오는 경우 값을 변경하면 리스트 내 원소의 값도 바뀐다.
for (int& value : ls) {
    cout << value << endl;
}

// 고전적인 iterate 방법
list<int>::iterator iter; 
for(iter = ls.begin(); iter != ls.end(); iter++) { 
    cout << *iter << endl;
}

// 역방향으로 순회하는 방법
list<int>::reverse_iterator riter; 
for(riter = ls.rbegin(); riter != ls.rend(); riter++) { 
    cout << *riter << endl;
} 

기타

std::list::size()

std::list::empty()

1
2
3
4
5
// 리스트 내 원소의 개수를 구한다
int size = ls.size();

// 리스트가 비어있는지 여부를 가져온다
bool is_empty = ls.empty();
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
바로가기