반응형
[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;
}
반응형
'Programming > C, C++' 카테고리의 다른 글
C++ STL List의 저장 공간 (0) | 2022.12.11 |
---|---|
C++ STL 반복자(iterator) 사용법 (0) | 2022.12.11 |
C++ STL(Standard Template Library)란? (0) | 2022.12.11 |
C++ Vector 선언 및 초기화 (0) | 2022.12.08 |
C++ Error(VS) "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. (0) | 2022.12.08 |