std::unordered_multiset insert() 方法
- 自 C++17 起
- C++17 之前
// (1) Non const version only
iterator insert( const value_type& value );
// (2) Non const version only
iterator insert( value_type& value );
// (3) Non const version only
iterator insert( const_iterator hint, const value_type& value );
// (4) Non const version only
iterator insert( const_iterator hint, value_type&& value );
// (5) Non const version only
template< class InputIt >
void insert( InputIt first, InputIt last );
// (6) Non const version only
void insert( std::initializer_list<value_type> ilist );
// (7) Non const version only
iterator insert( node_type&& nh );
// (8) Non const version only
iterator insert( const_iterator hint, node_type&& nh );
// (1) Non const version only
iterator insert( const value_type& value );
// (2) Non const version only
iterator insert( value_type& value );
// (3) Non const version only
iterator insert( const_iterator hint, const value_type& value );
// (4) Non const version only
iterator insert( const_iterator hint, value_type&& value );
// (5) Non const version only
template< class InputIt >
void insert( InputIt first, InputIt last );
// (6) Non const version only
void insert( std::initializer_list<value_type> ilist );
将元素插入到容器中,如果容器中还没有包含具有等效键的元素。
- (1-2) 插入值。
- (3-4) 插入值,使用提示作为非强制性建议来指示搜索应从何处开始。
- (5) 从范围 [ first; last ) 插入元素。
- (6) 从初始化列表
ilist
中插入元素。 - (7) 如果
nh
是一个空的节点句柄,则不做任何操作。否则,如果容器中不存在键与nh.key()
等效的元素,则将nh
所拥有的元素插入容器。如果nh
非空且get_allocator() != nh.get_allocator()
,则行为未定义。 - (8) 如果
nh
是一个空的节点句柄,则不做任何操作并返回尾部迭代器。否则,如果容器中不存在键与nh.key()
等效的元素,则将nh
所拥有的元素插入容器,并返回指向键与nh.key()
等效的元素的迭代器(无论插入成功还是失败)。如果插入成功,则nh
被移动赋值;否则,它保留对元素的拥有权。元素被插入到尽可能靠近hint
的位置。如果nh
非空且get_allocator() != nh.get_allocator()
,则行为未定义。
- 自 C++17 起
- C++17 之前
失效
如果插入成功,则在节点句柄中持有时获得的指向元素的指针和引用将失效,并且在提取之前获得的指向该元素的指针和引用将变为有效。
失效
如果由于插入而发生重新散列,则所有迭代器都将失效。否则,迭代器不受影响。
引用不会失效。仅当新元素数量大于 max_load_factor()*bucket_count()
时才会发生重新哈希。
参数
hint
- 迭代器,用作插入内容的建议位置value
- 要插入的元素值first
,last
- 要插入的元素范围ilist
- 要从中插入值的初始化列表nh
- 兼容的节点句柄
类型要求
- (5) -
InputIt
必须满足LegacyInputIterator
的要求。
返回值
- (1-4) 返回指向已插入元素的迭代器。
- (5-6) (无)
- (7-8) 如果
nh
为空,则返回尾部迭代器;否则,返回指向已插入元素的迭代器。
复杂度
- (1-4)
平均情况,常数 - O(1)。
最坏情况下,与容器的大小呈线性关系 - O(size())。 - (5-6)
平均情况,与要插入的元素数量成线性关系 - O(N),其中 N 是要插入的元素数量。
最坏情况 - O(N*size()+N),其中 N 是要插入的元素数量。 - (7-8)
平均情况,常数 - O(1)。
最坏情况下,与容器的大小呈线性关系 - O(size())。
异常
- (1-4) 如果任何操作抛出异常,插入无效。
重要
本节需要改进。您可以通过编辑此文档页面来帮助我们。
示例
重要
本节需要改进。您可以通过编辑此文档页面来帮助我们。