Development./C++

[C++] List container (std::list) 개념 및 사용법 정리

Chuuu_DevCamp:) 2020. 9. 3. 00:46
반응형

List container란?

List conatiner는 보통 이중 연결 리스트(doubly linked list)로 구현된다. 이중 연결 리스트를 이용하면 메모리 상의 임의의 위치에 원소를 저장하더라도 참조할 수 있게 된다. 왜냐하면 어떤 원소의 위치는 이전 원소와 다음 원소의 링크를 통해 따라서 추적해나갈 수 있기 때문이다.

 

그로 인해 List는 아래와 같은 장점들이 있다.

  • 임의의 위치에 원소 삽입 / 삭제가 가능하다.
  • 서로 다른 컨테이너 사이 or 컨테이너 내부에서 원소들간의 이동이 효율적이다.
  • 원소들을 앞에서 뒤로 or 뒤에서 앞으로 참조해 나갈 수 있다.

vector, deque conatiner들과 비교했을 때, 리스트는 원소의 삽입 / 삭제 / 원소들간 이동이 효율적이다. 

따라서, 정렬 알고리즘 처럼 원소의 이동이 빈번하게 발생하는곳에 적용하면 좋다.

특히, list::sort()함수와, list::splice가 기본적으로 제공되고 있으므로 편리하다.

 

List container의 멤버 함수

  • iterator 관련 멤버 함수
함수명 동작
begin() begineeing interator를 반환
end() end iterator를 반환
  • modifier 멤버 함수
함수명 동작
push_front(element) 리스트의 제일 앞에 원소를 추가
pop_front() 리스트의 제일 앞에 원소를 삭제
push_back(element) 리스트의 제일 뒤에 원소를 추가
pop_back() 리스트의 제일 뒤에 원소를 삭제
insert(iterator, element) iterator가 가리키는 위치 앞에 원소를 추가
erase(iterator) iterator가 가리키는 위치의 원소를 삭제
  • element access 관련 멤버 함수
함수명 동작
*iterator iterator가 가리키는 원소에 접근
front() 첫 번째 원소 반환
back() 마지막 원소 반환
  • Capacity 관련 멤버 함수
함수명 동작
empty() 리스트가 비어 있을 경우 true, 아닐 경우 false 리턴
size() 리스트의 원소 개수를 리턴