std::multiset insert() 方法
- 自 C++17 起
- 自 C++11 起
- 直到 C++11
// (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) Non const version only
iterator insert( const value_type& value );
// (3) Non const version only
iterator insert( const_iterator hint, const value_type& value );
// (5) Non const version only
template< class InputIt >
void insert( InputIt first, InputIt last );
将元素插入到容器中,如果容器中还没有包含具有等效键的元素。
-
(1-2) 插入值。如果容器中已有等效键的元素,则在范围的上限处插入。
-
(3-4)
- 自 C++11 起
- 直到 C++11
在尽可能靠近提示(刚好在提示之前)的位置插入值。在尽可能靠近提示的位置插入值。 -
(5) 插入范围 [ first, last ) 中的元素。
-
(6) 从初始化列表
ilist
中插入元素。 -
(7) 如果
nh
是一个空的节点句柄,则不执行任何操作。否则,如果容器中还没有包含与nh.key()
等效的键的元素,则将nh
所拥有的元素插入到容器中。如果nh
不为空且get_allocator() != nh.get_allocator()
,则行为未定义。 -
(8) 如果
nh
是一个空的节点句柄,则不执行任何操作并返回末尾迭代器。否则,如果容器中还没有包含与n.key()
等效的键的元素,则将nh
所拥有的元素插入到容器中,并返回指向具有与nh.key()
等效的键的元素的迭代器(无论插入成功与否)。如果插入成功,则nh
被移动,否则它保留对元素的拥有权。元素被插入到尽可能靠近提示(刚好在提示之前)的位置。如果nh
不为空且get_allocator() != nh.get_allocator()
,则行为未定义。
- 自 C++17 起
- 直到 C++11
如果插入成功,则在节点句柄中持有元素时获得的指针和引用将失效,并且在提取该元素之前获得的指针和引用将变得有效。
参数
提示
- 自 C++11 起
- 直到 C++11
指向新元素将要插入位置之前的迭代器迭代器,用作开始搜索位置的建议value
- 要插入的元素值first
,last
- 要插入的元素范围ilist
- 要从中插入值的初始化列表nh
- 兼容的节点句柄
类型要求
- (5) -
InputIt
必须满足LegacyInputIterator
的要求。
返回值
- (1-4) 返回指向已插入元素的迭代器。
- (5-6) (无)
- (7-8) 如果
nh
为空,则为末尾迭代器;否则,指向已插入元素的迭代器。
复杂度
- (1-2) 与容器大小呈对数关系 - O(log size())。
- (3-4)
- 自 C++11 起
- 直到 C++11
如果插入发生在hint
之前的位置,则为分摊常数时间 - O(1)。
否则,与容器大小呈对数关系 - O(log size())。如果插入发生在hint
之后的位置,则为分摊常数时间 - O(1)。
否则,与容器大小呈对数关系 - O(log size())。 - (5-6) O(N * log(size() + N)),其中 N 是要插入的元素数量。
- (7) 与容器大小呈对数关系 - O(log size())。
- (8)
如果插入发生在hint
之前的位置,则为分摊常数时间 - O(1)。
否则,与容器大小呈对数关系 - O(log size())。
异常
- (1-4) 如果任何操作抛出异常,插入无效。
本节需要改进。您可以通过编辑此文档页面来帮助我们。
示例
本节需要改进。您可以通过编辑此文档页面来帮助我们。