📅  最后修改于: 2023-12-03 15:29:51.118000             🧑  作者: Mango
unordered_multiset
是 C++ STL 库中的一个容器,它是个无序多重集合(元素可以重复出现,同时也不会被排序),在它的 API 中,提供了多个插入元素的函数,其中有一个是 insert()
。
template <typename... Args>
iterator insert(Args&&... args);
插入一个元素到 unordered_multiset
容器中,如果元素已经存在,则会直接被添加到当前的桶中,并返回一个指向新元素的迭代器,如果元素不存在,则会新建一个桶,再将元素添加到因为哈希冲突需要新建的桶中,并返回一个指向新元素的迭代器。
若参数为lvalue,则直接复制对象,若为rvalue则会将对象移动,提高效率。
返回由指定参数构成的元素(或由 std::forward
#include <iostream>
#include <unordered_set>
int main()
{
std::unordered_multiset<int> myset = {1, 2, 3, 4, 5};
// 插入一个元素4
auto it = myset.insert(4);
// 将元素6插入,提示了另一种使用方式,即使用std::make_pair
it = myset.insert(std::make_pair(6, 1));
// 插入元素10个7
myset.insert({7, 7, 7, 7, 7, 7, 7, 7, 7, 7});
std::cout << "myset contains:";
for (auto& x : myset) std::cout << ' ' << x;
std::cout << '\n';
}
myset contains : 6 1 5 7 7 7 7 7 7 7 7 4 3 2 1
insert()
方法可以帮助我们在 unordered_multiset 容器中,快速高效地添加元素,可以同时添加多个相同(或不同)的元素。在使用时可以注意到 pass-by-value 能够有效的提高效率。除此外,还有其他一些插入元素的函数,例如 emplace()
、try_emplace()
等,使用时可以根据实际场景进行选择。