template <class Key, class Hash = std::hash<Key>, class Pred = std::equal_to<Key>, class Allocator = std::allocator<Key>> class unordered_multiset
#include <unordered_multiset> using namespace std; unordered_multiset <Key> 変数名; unordered_multiset<int> x; // 空の unordered_multiset,昇順 unordered_multiset<int> x(it1, it2); // it1 から it2 の範囲で初期化 unordered_multiset<int> x(y); // unordered_multiset y で初期化 unordered_multiset<int> x ({2, 4, 4, 1}); // 初期化子リスト unordered_multiset<int> x {2, 4, 4, 1}; // 初期化子リスト unordered_multiset<int> x = {2, 4, 4, 1}; // 初期化子リスト
= == !=
#include <iostream> #include <unordered_set> using namespace std; using itr = unordered_multiset<int>::iterator; void print(string str, unordered_multiset<int> &s) { if (s.empty()) cout << "コンテナ " << str << " は空です\n"; else { cout << str << " の要素数: " << s.size() << endl; for (auto x : s) cout << " " << x; // unordered_multiset<int>::iterator it; // for (it = s.begin(); it != s.end(); it++) // cout << " " << *it; cout << endl; } } int main() { // 初期設定 cout << "**初期設定**\n"; unordered_multiset<int> s1 = {1, 5, 0, 0, 3, 0, 0}; print("s1", s1); // 2 番目の要素の前に要素を追加 cout << "**2 番目の要素の前に要素を追加**\n"; unordered_multiset<int>::iterator it = s1.begin(); it++; s1.insert(it, 5); print("s1", s1); // 3 番目の要素,及び,要素 5 を削除 cout << "**3 番目の要素,及び,要素 5 を削除**\n"; it = s1.begin(); it++; it++; s1.erase(it); s1.erase(5); print("s1", s1); // 要素 0 の位置 cout << "**要素 0 の位置**\n"; it = s1.find(0); printf(" イテレータの示す値: %d\n", *it); pair<itr, itr> x = s1.equal_range(0); printf(" 全ての要素"); for (it = x.first; it != x.second; it++) cout << " " << *it; cout << endl; // 交換 cout << "**交換**\n"; unordered_multiset<int> s2; cout << "入れ替え前:\n"; print("s1", s1); print("s2", s2); s1.swap(s2); cout << "入れ替え後:\n"; print("s1", s1); print("s2", s2); // 演算子で比較 cout << "**比較**\n"; s1.insert(1); s1.insert(3); s1.insert(0); s1.insert(0); s1.insert(0); s1.insert(0); print("s1", s1); if (s1 == s2) cout << " 2 つのコンテナ内の要素はすべて等しい\n"; // s1 のすべての要素を削除 cout << "**s1 のすべての要素を削除**\n"; s1.clear(); print("s1", s1); return 0; }
**初期設定** s1 の要素数: 7 3 0 0 0 0 5 1 **2 番目の要素の前に要素を追加** s1 の要素数: 8 1 5 5 0 0 0 0 3 **3 番目の要素,及び,要素 5 を削除** s1 の要素数: 6 1 0 0 0 0 3 **要素 0 の位置** イテレータの示す値: 0 全ての要素 0 0 0 0 **交換** 入れ替え前: s1 の要素数: 6 1 0 0 0 0 3 コンテナ s2 は空です 入れ替え後: コンテナ s1 は空です s2 の要素数: 6 1 0 0 0 0 3 **比較** s1 の要素数: 6 3 1 0 0 0 0 2 つのコンテナ内の要素はすべて等しい **s1 のすべての要素を削除** コンテナ s1 は空です
菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |