Programming/C C++

C++ STL List 컨테이너

whitele 2021. 6. 1. 19:21
반응형

List 컨테이너

 list 컨테이너는 노드 기반 컨테이너로 데이터가 노드 단위로 저장되고 이중 연결 리스트로 구현되어있다. Vector와는 노드단위로 저장되는 점에서 차이가 있다.

 

생성자

  • list<T> list : 빈 list 생성

복사 생성자를 제공한다.

멤버 함수

  • assign(n, x) : x값으로 n개의 원소를 할당
  • front() : 첫 번째 원소 참조
  • back() : 마지막 원소 참조
  • begin() : 첫 원소를 가리키는 반복자 반환
  • rbegin() : 첫 원소를 가리키는 연 순차 열의 반복자 반환
  • end() : 마지막 원소를 가리키는 반복자 반환
  • rend() : 마지막 원소를 가리키는 역순 차열의 반복자 반환
  • clear() : 모든 원소 제거
  • empty() : 비었는지 검사
  • erase(x) : x가 가리키는 원소를 제거 후 다음 원소를 가리키는 반복자 반환
  • insert(a, x) : a가 가리키는 위치에 x삽입 후, 삽입한 노드를 가리키는 반복자 반환
  • insert(a, n, x) : a가 가리키는 위치에 n개의 x값 삽입 후, 삽입한 노드를 가리키는 반복자 반환
  • max_size() : 해당 컨테이너가 담을 수 있는 최대 노드의 개수(메모리 크기)
  • merge(list) : list와 병합 정렬 
  • pop_front() : 첫 원소 제거
  • pop_back() : 마지막 원소 제거
  • push_front(x) : x를 앞에 추가
  • push_back(x) : x를 마지막에 추가
  • remove(x) : 원소 x를 모두 제거
  • remove_if(a) : a가 참인 원소를 모두 제거
  • resize(n) : 크기를 n으로 변경
  • resize(n,x) : 크기를 n으로 변경 후 빈 공간은 x로 초기화
  • revese() : 배열을 역순으로
  • sort() : 정렬
  • unique() : 인접한 원소와 값이 같으면 하나의 원소로 결합
  • swap(list) : list와 스왑
  • splice(p, list) :  p가 가리키는 곳에 list 삽입
  • splice(p, list, p2) : p가 가리키는 위치에 list의 p2가 가리키는 원소를 넣는다.

사용 예제

#include <iostream>
#include <list>
using namespace std;
int main(){
	list<int> list;
	for(int i=0;i<10;i++){
		list.push_back(i);
	}
	list<int>::iterator iter;
	

	list.push_back(100);
	
	for(iter=list.begin();iter!=list.end();iter++){
		cout<<*iter<<endl;
	}
	return 0;
}

리스트 컨테이너 정리

 list는 노드 기반 컨테이너이다. 중간에 삽입 삭제가 가능하며 삽입 삭제가 빈번할 때 list 컨테이너를 사용하면 유리하다. 이중 연결 리스트로 구현되어있어 원소 앞뒤에 상관없이 자유롭다. 덕분에 반복자는 양방향으로 이동이 가능하다. list와 다른 list를 삽입, 정렬하는 것도 구현되어 있어 다루기 용이하다.

728x90
반응형