[C++ STL] list 컨테이너

[C++ STL] list 컨테이너

1. 들어가기 앞서..

컨테이너는 같은 타입을 관리할 목적으로 만들어진 클래스

2. list 컨테이너

표준 시퀀스 컨테이너 : 원소가 자신만의 insert 위치(순서)를 가지는 컨테이너 (선형) ( vector, deque, list )

노드 기반 컨테이너 : 각각의 데이터를 메모리 단위에 저장 ( list, set, multiset, map, multimap )

표준 연관 컨테이너 : 저장되는 원소가 삽입 순서와 달라도 특정 정렬 기준에 의해 자동 정렬(비선형) ( set, multiset, map, multimap )

배열 기반 컨테이너 : 데이터 여러 개가 하나의 메모리 단위에 저장 ( vector, deque )

3. 대표 함수
  • push_front(element) : 리스트 맨 앞에 추가
  • push_back(element) : 리스트 맨 뒤에 추가
  • pop_front() : 리스트 맨 앞 원소 삭제
  • pop_back() : 리스트 맨 뒤 원소 삭제
  • insert( iterator, element ) : iterator가 가리키는 부분 앞에 추가
  • erase( iterator ) : iterator가 가리키는 원소 삭제
  • front() : 첫 번째 원소 반환
  • back() : 마지막 원소 반환
  • empty() : 비어 있으면 true 아니면 false 반환
  • size() : 원소 수 반환
  • clear() : 모든 원소 삭제
4. list 기본 사용 예시 전체 코드
#include <iostream>
#include <list>

using namespace std;

void main ( )
{
	list<int> intList;

	intList.push_front( 1 ); // 앞에서 삽입
	intList.push_front( 2 );

	for ( int iLoop : intList )
		cout << "int List : " << iLoop << endl;
	cout << endl;


	intList.push_back( 3 ); // 뒤에서 삽입
	intList.push_back( 4 );

	for ( int iLoop : intList )
		cout << "int List : " << iLoop << endl;
	cout << endl;


	intList.pop_front(); // 앞에서 pop
	intList.pop_back(); // 뒤에서 pop

	for ( int iLoop : intList )
		cout << "int List : " << iLoop << endl;
	cout << endl;


	list<int>::iterator itr = intList.begin(); // 리스트 시작 가리킴
	itr++; // 두번째 원소;
	intList.insert( itr, 5 ); // 가리키는원소 앞에 삽입

	for ( int iLoop : intList )
		cout << "int List : " << iLoop << endl;
	cout << endl;

	itr = intList.begin(); // 리스트 시작 가리킴
	itr++; // 두번째 원소;
	intList.erase( itr ); // 가리키는 원소 삭제

	for ( int iLoop : intList )
		cout << "int List : " << iLoop << endl;
	cout << endl;

	cout << "empty : " << intList.empty() << " , size : " << intList.size() << endl << endl; // empty, size 출력

	intList.clear(); // 모두 삭제
	cout << "empty : " << intList.empty() << " , size : " << intList.size() << endl << endl; // empty, size 출력

	system( "pause" );
}