📜  C++ STL中的unordered_multiset reserve()(1)

📅  最后修改于: 2023-12-03 15:29:51.139000             🧑  作者: Mango

C++ STL中的unordered_multiset reserve()

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 分配所需的内存空间,从而避免了动态内存分配的开销,提高程序的效率。在预知容器中元素的个数时,建议使用此函数。