본문 바로가기
Programming/C, C++

C++ STL 컨테이너(Container) 사용법

by Dev_카페인 2022. 12. 11.
반응형

[C++/STL] 컨테이너(Container) 사용법

컨테이너 구성 요소

1. 연속 컨테이너(Sequence Container) : 정렬되지 않은 컨테이너

     - 벡터 (Vector), 디큐(Deque), 리스트(List)

2. 연관 컨테이너(Associative Container) : 정렬 된 컨테이너

      - 셋(Set), 멀티셋(MultiSet), 맵(Map), 멀티맵(MultiMap),

        순서가 정해지지 않은(Unordered set, multiset, map, multimap)

3. 컨테이너 어댑터(Container Adapter) : 컨테이너 위에서 돌아가는 자료구조

      - 스택(Stack), 큐(Queue), 우선순위큐(Priority_Queue)

 

 

1. 연속 컨테이너(Sequence Container) : 정렬되지 않은 컨테이너

     - 벡터 (Vector), 디큐(Deque), 리스트(List)

#include <iostream>
#include <vector>
#include <deque>
#include <list>

using namespace std;

int main()
{
	vector<int> vec;
	deque<int> deq;
	list<int> _list;

	list<int>::iterator listIter = _list.begin();

	for (int i = 0; i < 10; i++)
	{
		vec.push_back(i);
		// Vector는 push_front 없음

		deq.push_back(i);
		deq.push_front(i);

		_list.push_back(i);
		_list.push_front(i);
	}

	cout << "Vector : ";
	for (auto& iter : vec)	// Iterator 사용
	{
		cout << iter << " ";
	}
	cout << endl;

	cout << "Deque : ";
	for (auto& iter : deq)
	{
		cout << iter << " ";
	}
	cout << endl;

	cout << "List : ";
	for (listIter = _list.begin(); listIter != _list.end(); listIter++)
	{
		cout << *listIter << " ";
	}
	cout << endl;

	return 0;
}

 

2. 연관 컨테이너(Associative Container) : 정렬 된 컨테이너

      - 셋(Set), 멀티셋(MultiSet), 맵(Map), 멀티맵(MultiMap)

// STL Associative Container

#include <iostream>
#include <set>
#include <map>

using namespace std;

int main()
{
	set<int> _set;
	multiset<int> _mSet;

	map<int, char> _map;
	multimap<int, char> _mMap;

	// 거꾸로 삽입 해도 정렬 됌
	for (int i = 10; i >= 0; i--)
	{
		_set.insert(i);
		_set.insert(i);		// 중복 삽입 불가

		_mSet.insert(i);
		_mSet.insert(i);	// 중복 삽입 가능

		_map[i] = (i+65);
		_map[i] = (i + 65);	// 중복 삽입 불가

		_mMap.insert(std::pair<int, char>(i, i + 65));
		_mMap.insert(std::pair<int, char>(i, i + 65));	// 중복 삽입 가능
	}

	cout << "set Value : ";
	for (auto& iter : _set)
	{
		cout << iter << ", ";
	}
	cout << endl;


	cout << "multiset Value : ";
	for (auto& iter : _mSet)
	{
		cout << iter << ", ";
	}
	cout << endl;


	cout << "map Value : " << endl;
	for (auto& iter : _map)
	{
		cout << iter.first << " : " << iter.second << endl;
	}
	cout << "===========" << endl;


	cout << "Multimap Value : " << endl;
	for (auto& iter : _mMap)
	{
		cout << iter.first << " : " << iter.second << endl;
	}
	cout << "===========" << endl;


	return 0;
}

 

 

 

 

 

반응형