* create
```
#include <unordered_set>
using namespace std;
int main () {
unordered_multiset<int> a; // default constructor
unordered_multiset<int> b(a); // copy constructor
unordered_multiset<int> c(move(a)); // move constructor
unordered_multiset<int> d{1,2,3}; // initializer list constructor
// unordered_multiset has no fill constructor
unordered_multiset<int> f(a.begin(),a.end()); // range constructor
unordered_multiset<int>* g = new unordered_multiset<int>{1,2,3}; // new operator
delete g;
}
```
* iterator
```
#include <iostream>
#include <unordered_set>
using namespace std;
int main (){
unordered_multiset<int> s{1,2,3,4,5,1};
for (auto it=s.begin(); it!=s.end(); ++it)
cout<<*it<<",";
cout<<endl;
for (auto it=s.cbegin(); it!=s.cend(); ++it)
cout<<*it<<",";
cout<<endl;
}
/*
5,4,3,2,1,1,
5,4,3,2,1,1,
*/
```
* add
```
#include <iostream>
#include <unordered_set>
using namespace std;
int main ()
{
unordered_multiset<int> m;
m.insert(1);
m.emplace(1);
for (auto &i:m)
cout<<i<<";";
cout<<endl;
}
// 1;1;
```
* change
```
#include <iostream>
#include <unordered_set>
using namespace std;
void p(unordered_set<int>& a) {
for(auto &i:a) cout<<i<<";";
cout<<endl;
}
int main ()
{
unordered_set<int> a{1,2,3,4,5};
unordered_set<int> a1(a), a2(a);
a.swap(a1);
p(a);
}
```
* query
```
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_multiset<int> s{1,2,3,4,5,6,1,2,3};
auto it=s.find(2);
if(it!=s.end()) cout<<"found"<<endl;
cout<<s.count(2)<<endl;
auto r=s.equal_range(3);
for(auto it=r.first; it!=r.second; it++)
cout<<*it<<",";
cout<<endl;
cout<<s.empty()<<endl;
cout<<s.size()<<endl;
cout<<s.max_size()<<endl;
}
/*
found
2
3,3,
0
9
576460752303423487
*/
```
* delete
```
#include <unordered_set>
using namespace std;
int main () {
unordered_multiset<int> s{1,2,3,4,5,1,2,3};
s.erase(s.begin());
s.erase(4);
s.clear();
}
```