프로그래밍/c++ STL

[c++ STL] List 기본 사용법 및 예제

rrruu 2020. 2. 3. 09:10
반응형

list는 컨테이너의 모든 위치에서 접근이 가능한 컨테이너 입니다.

양방향으로 빠른 삽입 및 삭제가 가능합니다.

하지만 컨테이너의 요소에 임의로 접근할 수 없습니다.

 

선언방법을 알아봅시다.

 

#include<list>

 

먼저 전처리기에 include를 해야합니다.

int형의 자료를 저장하는 int_list라는

이름의 list를 만든다고 한다면

 

list<int> int_list;

 

이런식으로 선언을 하면 됩니다.

 

사용방법을 알아 봅시다.

 

양쪽으로 접근이 가능하기 때문에

앞에 자료를 저장할 때는

push_front를 사용합니다.

int_list.push_front(넣을 자료);

뒤에 자료를 저장할 때는

push_back를 사용합니다.

int_list.push_back(넣을 자료);

 

지우는방법은 erase를 사용합니다.

이때 원하는 위치를 알아야 하는데

여기서 iterator를 이용한 위치 값을

사용하여 원하는 위치의 값을 삭제합니다.

list<int>::iterator iter= int_list.begin();

int_list.erase(iter);

 

삽입을 하는 방법은 insert를 사용합니다.

이때 원하는 위치를 알아야 하는데

여기서 iterator를 이용한 위치 값을

사용하여 원하는 위치의 값을 삽입합니다.

list<int>::iterator iter= int_list.begin();

int_list.insert(iter);

 

첫번째 데이터를 확인하는 방법도 있습니다.

front를 사용하면 첫번째 데이터를 반환 하게 됩니다.

cout<<int_list.front();

 

안의 데이터의 갯수를 확인하는 방법도 있습니다.

size를 사용하면 안의 데이터의 수를 반환 하게 됩니다.

cout<<int_list.size();

 

안의 데이터가 비어 있는지 확인하는 방법도 있습니다.

empty 사용하면 안의 데이터의 수를 반환 하게 됩니다.

if (int_list.empty())

empty자체가 bool타입으로 반환값을 갖기 때문에

이런식으로 조건문으로 사용하시면 됩니다.

 

간단한 예제 입니다.

#include<iostream>
#include<list>

using namespace std;

int main()
{
	list<int> int_list;
	
	int_list.push_back(1);
	int_list.push_back(2);
	int_list.push_back(3);
	int_list.push_front(4);
	int_list.push_front(5);

	if (int_list.empty())
		cout << "Is empty" << endl;
	else
		cout << "This size : " << int_list.size()<< endl;

	for (int i : int_list)
	{
		cout << i << endl; // 출력
	}

	list<int>::iterator iter = int_list.begin();
	iter++;
	cout << "2번째에 4삭제" << endl;
	int_list.erase(iter);

	iter = int_list.begin();
	iter++;
	cout << "2번째에 9삽입" << endl;
	int_list.insert(iter, 9);
	
	for (int i : int_list)
	{
		cout << i << endl; //출력
	}
	
	cout<<"첫번 째 값 : "<<int_list.front()<<endl;

	cout << "모두 지우기" << endl;
	int_list.clear();

	if (int_list.empty())
		cout << "Is empty" << endl;
	else
		cout << "This size : " << int_list.size() << endl;

	return 0;
}

실행화면 입니다.

반응형