[C++] 자료구조
Updated:
개요
- array
- vector
- list
- deque
- set
- unordered_set
- multiset
- map
- multimap
- unordered_map
예제
- 코드
-
#include <array> #include <deque> #include <iostream> #include <list> #include <map> #include <set> #include <string> #include <unordered_map> #include <unordered_set> #include <utility> #include <vector> using namespace std; class Test { private: int i; public: Test(int i) : i(i) {} bool operator<(const Test& test) const { return this->i < test.i; } friend ostream& operator<<(ostream& o, const Test& test); }; ostream& operator<<(ostream& o, const Test& test) { o << test.i; return o; } int main() { array<int, 3> arr = {1, 2, 3}; cout << arr[0] << endl; cout << arr.at(1) << endl; cout << arr.size() << endl; for (const auto& iter : arr) { cout << "array : " << iter << endl; } cout << "------" << endl; vector<int> v; v.clear(); v.push_back(1); v.push_back(2); v.push_back(4); v.insert(v.begin() + 2, 3); cout << v[0] << endl; cout << v.at(0) << endl; for (auto iter = v.begin(); iter != v.end(); ++iter) { cout << "vector-1 : " << *iter << endl; } v.erase(v.end() - 1); for (const auto& iter : v) { cout << "vector-2 : " << iter << endl; } cout << "vector size : " << v.size() << endl; cout << "------" << endl; list<double> l; l.clear(); l.push_back(1.1); l.push_back(2.2); for (const auto& iter : l) { cout << "list : " << iter << endl; } cout << "------" << endl; deque<char> d; d.clear(); d.push_back('b'); d.push_front('a'); for (const auto& iter : d) { cout << "deque : " << iter << endl; } cout << "------" << endl; set<string> s1; s1.clear(); s1.insert("ccc"); s1.insert("aaa"); s1.insert("bbb"); s1.insert("aaa"); for (const auto& iter : s1) { cout << "set-1 : " << iter << endl; } if (s1.find("aaa") != s1.end()) { cout << "exist" << endl; } set<Test> s2; s2.clear(); s2.insert(Test(2)); s2.insert(Test(1)); s2.insert(Test(2)); for (const auto& iter : s2) { cout << "set-2 : " << iter << endl; } cout << "------" << endl; multiset<int> ms; ms.clear(); ms.insert(1); ms.insert(1); ms.insert(2); for (const auto& iter : ms) { cout << "multiset : " << iter << endl; } cout << "------" << endl; unordered_set<string> s3; s3.clear(); s3.insert("ccc"); s3.insert("aaa"); s3.insert("bbb"); for (const auto& iter : s3) { cout << "unordered_set : " << iter << endl; } cout << "------" << endl; map<int, bool> m; m.clear(); m.insert(make_pair(2, true)); m[0] = true; m[0] = false; m[1] = true; for (const auto& iter : m) { cout << "map : " << iter.first << ", " << iter.second << endl; } if (m.find(3) == m.end()) { cout << "not exist" << endl; } cout << "------" << endl; multimap<int, bool> mm; mm.clear(); mm.insert(make_pair(0, true)); mm.insert(make_pair(0, false)); mm.insert(make_pair(2, true)); for (const auto& iter : mm) { cout << "multimap-1 : " << iter.first << ", " << iter.second << endl; } auto er = mm.equal_range(0); for (auto iter = er.first; iter != er.second; ++iter) { cout << "multimap-2 : " << iter->first << ", " << iter->second << endl; } cout << "------" << endl; unordered_map<int, bool> um; um.clear(); um.insert(make_pair(2, true)); um[0] = false; um[1] = true; for (const auto& iter : um) { cout << "unordered_map : " << iter.first << ", " << iter.second << endl; } return 0; }
-
- 실행 결과
-
1 2 3 array : 1 array : 2 array : 3 ------ 1 1 vector-1 : 1 vector-1 : 2 vector-1 : 3 vector-1 : 4 vector-2 : 1 vector-2 : 2 vector-2 : 3 vector size : 3 ------ list : 1.1 list : 2.2 ------ deque : a deque : b ------ set-1 : aaa set-1 : bbb set-1 : ccc exist set-2 : 1 set-2 : 2 ------ multiset : 1 multiset : 1 multiset : 2 ------ unordered_set : bbb unordered_set : aaa unordered_set : ccc ------ map : 0, 0 map : 1, 1 map : 2, 1 not exist ------ multimap-1 : 0, 1 multimap-1 : 0, 0 multimap-1 : 2, 1 multimap-2 : 0, 1 multimap-2 : 0, 0 ------ unordered_map : 1, 1 unordered_map : 0, 0 unordered_map : 2, 1
-