📅  最后修改于: 2023-12-03 15:29:51.139000             🧑  作者: Mango
unordered_multiset
是 C++11 标准中 STL 提供的一个无序多重集合容器,底层实现是通过哈希表实现的。在使用 unordered_multiset
时,如果我们能预知容器中元素的个数,那么可以通过调用 reserve()
来提前分配所需要的内存,从而提高程序的效率。
void reserve( size_type count );
参数 count
表示需要预计分配的元素数量,即预留空间大小。
以下演示了如何使用 reserve()
函数。
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_multiset<int> mset;
mset.reserve(100000);
for (int i = 0; i < 100000; ++i)
{
mset.insert(i);
}
cout << "size = " << mset.size() << endl;
return 0;
}
在上述代码中,首先创建了一个空的 unordered_multiset
对象 mset
,然后调用 reserve()
函数预留了 100000 个元素的空间,接着循环插入了 100000 个元素。最后输出元素个数,预期结果为 size = 100000
。
使用 reserve()
函数可以提前为 unordered_multiset
分配所需的内存空间,从而避免了动态内存分配的开销,提高程序的效率。在预知容器中元素的个数时,建议使用此函数。