std::list<T,Allocator>::insert

来自cppreference.com
< cpp‎ | container‎ | list

(1)
iterator insert( iterator pos, const T& value );
(C++11 前)
iterator insert( const_iterator pos, const T& value );
(C++11 起)
iterator insert( const_iterator pos, T&& value );
(2) (C++11 起)
(3)
void insert( iterator pos, size_type count, const T& value );
(C++11 前)
iterator insert( const_iterator pos, size_type count, const T& value );
(C++11 起)
(4)
template< class InputIt >
void insert( iterator pos, InputIt first, InputIt last);
(C++11 前)
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );
(C++11 起)
iterator insert( const_iterator pos, std::initializer_list<T> ilist );
(5) (C++11 起)

插入元素到容器中的指定位置。

1-2)pos 前插入 value
3)pos 前插入 valuecount 个副本。
4)pos 前插入来自范围 [first, last) 的元素。

InputIt 为整数类型,则此重载与重载 (3) 拥有相同效果。

(C++11 前)

此重载仅若 InputIt 足以为老式输入迭代器 (LegacyInputIterator) 才参与重载决议,以避免与重载 (3) 有歧义。

(C++11 起)
firstlast 是指向 *this 中的迭代器,则行为未定义。
5)pos 前插入来自 initializer_list ilist 的元素。

没有引用和迭代器被非法化。

参数

pos - 将内容插入到其前的迭代器。 pos 可为 end() 迭代器
value - 要插入的元素值
first, last - 要插入的元素范围,不能是指向调用 insert 所用的容器中的迭代器
ilist - 要插入的值来源的 initializer_list
类型要求
-
为使用重载 (1) , T 必须满足可复制插入 (CopyInsertable) 的要求。
-
为使用重载 (2) , T 必须满足可移动插入 (MoveInsertable) 的要求。
-
为使用重载 (3) , T 必须满足可复制赋值 (CopyAssignable) 可复制插入 (CopyInsertable) 的要求。
-
为使用重载 (4,5) , T 必须满足可就位构造 (EmplaceConstructible) 的要求。


返回值

1-2) 指向被插入 value 的迭代器。
3) 指向首个被插入元素的迭代器,或若 count==0 则为 pos
4) 指向首个被插入元素的迭代器,或若 first==last 则为 pos
5) 指向首个被插入元素的迭代器,或若 ilist 为空则为 pos

复杂度

1-2) 常数。
3)count 成线性。
4)std::distance(first, last) 成线性。
5)ilist.size() 成线性。

异常

若抛出异常,则无效果(强异常保证)。

参阅

(C++11)
原位构造元素
(公开成员函数)
插入元素到容器起始
(公开成员函数)
将元素添加到容器末尾
(公开成员函数)