定义于头文件
,类模板为:
template< class Key,
class Hash = std::hash<Key>,
class KeyEqual = std::equal_to<Key>,
class Allocator = std::allocator<Key>
> class unordered_multiset;
示例:
#include
#include
using namespace std;
int main()
{
unordered_multiset<int> myUnorededMultiSet = { 10,20,50,30,10,100,70,30,40 };
//正向迭代器测试
cout << "正向迭代器遍历容器:" << endl;
for (auto it = myUnorededMultiSet.begin(); it != myUnorededMultiSet.end(); ++it)
{
cout << *it << " ";
}
cout << endl;
//正向常迭代器测试
cout << "正向常迭代器遍历容器:" << endl;
for (auto cit = myUnorededMultiSet.cbegin(); cit != myUnorededMultiSet.cend(); ++cit)
{
cout << *cit << " ";
}
cout << endl;
return 0;
}
输出结果:
正向迭代器遍历容器:
50 10 10 100 20 70 30 30 40
正向常迭代器遍历容器:
50 10 10 100 20 70 30 30 40
empty: 检查容器是否为空 (公开成员函数)
size: 返回容纳的元素数 (公开成员函数)
max_size:返回可容纳的最大元素数 (公开成员函数)
示例:
#include
#include
using namespace std;
int main()
{
unordered_multiset<int> myUnorededMultiSet = { 10,20,50,30,10,100,70,30,40 };
cout << "myUnorededMultiSet.empty() = " << myUnorededMultiSet.empty() << endl;
cout << "myUnorededMultiSet.size() = " << myUnorededMultiSet.size() << endl;
cout << "myUnorededMultiSet.max_size() = " << myUnorededMultiSet.max_size() << endl;
return 0;
}
输出结果:
myUnorededMultiSet.empty() = 0
myUnorededMultiSet.size() = 9
myUnorededMultiSet.max_size() = 357913941
clear: 清除内容 (公开成员函数)
insert: 插入元素或结点 (C++17 起) (公开成员函数)
emplace: 原位构造元素 (公开成员函数)
emplace_hint: 使用提示原位构造元素 (公开成员函数)
erase: 擦除元素 (公开成员函数)
swap: 交换内容 (公开成员函数)
extract(C++17):从另一容器释出结点 (公开成员函数)
merge(C++17): 从另一容器接合结点 (公开成员函数)
示例:
#include
#include
using namespace std;
int main()
{
unordered_multiset<int> myUnorededMultiSet = { 10,20,50,30,10,100,70,30,40 };
cout << "元素列表:" << endl;
for (auto num : myUnorededMultiSet)
{
cout << num << " ";
}
cout << endl;
myUnorededMultiSet.insert(20); //向容器插入20
cout << "在容器插入20后,元素列表:" << endl;
for (auto num : myUnorededMultiSet)
{
cout << num << " ";
}
cout << endl;
myUnorededMultiSet.erase(myUnorededMultiSet.begin()); //移除容器的首端
cout << "在移除容器的首端后,元素列表:" << endl;
for (auto num : myUnorededMultiSet)
{
cout << num << " ";
}
cout << endl;
myUnorededMultiSet.clear(); //清空容器
cout << "清空容器后,元素列表:" << endl;
for (auto num : myUnorededMultiSet)
{
cout << num << " ";
}
cout << endl;
return 0;
}
输出结果:
元素列表:
50 10 10 100 20 70 30 30 40
在容器插入20后,元素列表:
50 10 10 100 20 20 70 30 30 40
在移除容器的首端后,元素列表:
10 10 100 20 20 70 30 30 40
清空容器后,元素列表:
count: 返回匹配特定键的元素数量 (公开成员函数)
find: 寻找带有特定键的元素 (公开成员函数)
contains(C++20):检查容器是否含有带特定关键的元素 (公开成员函数)
equal_range: 返回匹配特定键的元素范围 (公开成员函数)
示例:
#include
#include
using namespace std;
int main()
{
unordered_multiset<int> myUnorededMultiSet = { 10,20,50,30,10,100,70,30,40 };
cout << "myMultiSet元素表列:" << endl;
for (auto num : myUnorededMultiSet)
{
cout << num << " ";
}
cout << endl;
cout << "myUnorededMultiSet.count(100) = " << myUnorededMultiSet.count(100) << endl;
cout << "myUnorededMultiSet.find(20) == myUnorededMultiSet.end() ? "
<< (myUnorededMultiSet.find(20) == myUnorededMultiSet.end()) << endl;
cout << "键 == 30 对应的值:" << endl;
pair<unordered_set<int>::iterator, unordered_set<int>::iterator> myRange;
myRange = myUnorededMultiSet.equal_range(30);
for (auto it = myRange.first; it != myRange.second; ++it)
{
cout << *it << " ";
}
cout << endl;
return 0;
}
输出结果:
myMultiSet元素表列:
50 10 10 100 20 70 30 30 40
myUnorededMultiSet.count(100) = 1
myUnorededMultiSet.find(20) == myUnorededMultiSet.end() ? 0
键 == 30 对应的值:
30 30
begin(size_type)、cbegin(size_type): 返回一个迭代器,指向指定的桶的开始 (公开成员函数)
end(size_type)、cend(size_type): 返回一个迭代器,指向指定的桶的末尾 (公开成员函数)
bucket_count: 返回桶数 (公开成员函数)
max_bucket_count: 返回桶的最大数量 (公开成员函数)
bucket_size: 返回在特定的桶中的元素数量 (公开成员函数)
bucket: 返回带有特定键的桶 (公开成员函数)
load_factor: 返回每个桶的平均元素数量 (公开成员函数)
max_load_factor:管理每个桶的平均元素数量的最大值 (公开成员函数)
rehash: 为至少为指定数量的桶预留存储空间。这会重新生成哈希表。 (公开成员函数)
reserve: 为至少为指定数量的元素预留存储空间。这会重新生成哈希表。 (公开成员函数)
hash_function: 返回用于对关键哈希的函数 (公开成员函数)
key_eq: 返回用于比较键的相等性的函数 (公开成员函数)