STL List

Lellow_Mellow·2022년 9월 2일
0
post-thumbnail

STL List

list(연결리스트)는 배열과는 달리 각 element가 그 값만 가지고 있는 것이 아니라, 다음 element를 가리키는 pointer까지 함께 가지고 있는 형태이다. 이러한 형태를 node(노드)라고 하며, 노드들이 서로 연결되어 이루는 것이 연결리스트이다.

기존의 배열은 중간에 값을 추가하거나 삭제할 경우, 뒤의 데이터들을 한칸씩 옮겨야하는 단점이 존재하였지만, list는 다음 노드를 가리키는 포인터만 변경하면 되므로, 이러한 단점을 보완했다고 할 수 있다.

노드들이 서로 포인터로 연결되어있어 배열과는 달리 메모리상에 연속적으로 데이터가 저장되지 않는다. 이 때문에 list 내부의 특정 노드에 접근하기 위해서는 처음부터 순서대로 접근해야 한다.

List의 사용법

List 선언 및 초기화

list를 사용하기 위해서는 아래와 같이 header 파일을 include 해준다.

#include <list>

기본적인 list의 선언 및 초기화는 아래와 같다.

// int형 list 선언
list<int> l;

List 값 추가 (삽입)

list는 가장 앞이나 뒤에 값을 삽입하거나, iterator를 이용하여 특정 위치에 값 삽입이 가능하다.

// 가장 뒤에 값 삽입
l.push_back(1);

// 가장 앞에 값 삽입
l.push_front(1);

// iterator 선언 + 초기화
list<int>::iterator iter = l.begin();

// iterator를 활용해 반복자 위치에 값 삽입
l.insert(iter, 1);

List 값 삭제

list의 가장 끝 값과 첫 값을 간단히 삭제할 수 있으며, iterator를 활용하여 중간에 있는 값을 삭제할 수 있다.

// 가장 끝 값을 삭제
l.pop_back();

// 가장 첫 값을 삭제
l.pop_front();

// iterator가 가리키는 원소 삭제
v.erase(iter);

List 크기 구하기

list의 크기와 비어있는지에 대한 여부는 아래 method로 확인이 가능하다.

// list의 size 반환
l.size();

// list가 비어있는지 확인, 비어있으면 True, 아니면 False
l.empty();

List 원소 접근

가장 첫 원소와 마지막 원소는 아래의 method로 조회가 가능하며, list 내부의 다른 원소들은 iterator를 이용해 접근이 가능하다.

// 첫 번째 원소 조회
l.front();

// 마지막 원소 조회
l.back();

// iterator가 가리키는 원소 조회
*iter;
profile
festina lenta

0개의 댓글