STL std::vector::insert 详解

STL std::vector::insert 详解_第1张图片
详细手册地址

iterator insert( iterator pos, const T& value );
iterator insert( const_iterator pos, const T& value );
// 最普遍的使用方式,pos 找到要插入的位置,第二个参数 value 表示要插入的数据,
// 自从C++11开始后使用 const_iterator , const 常量可以接收的实参更加广泛。

iterator insert( const_iterator pos, T&& value );
// 第二个参数表示 右值引用,c++11增加,对于即将消亡值可以更好的利用。

void insert( iterator pos, size_type count, const T& value );	(C++11 前)
iterator insert( const_iterator pos, size_type count, const T& value );
// pos	表示要插入数据的位置
// count	表示要插入数据的个数
// value	表示要插入数据的类型

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 );
// 模板函数 first 和 last 两个迭代器中的数据 为要插入的数据。

iterator insert( const_iterator pos, std::initializer_list ilist );
// 使用 初始化列表 插入新的数据
// for example :   vec.insert( vec.begin(), {1,2,3} );

note 谨慎使用 vector 元素的引用

若新 size() 大于旧 capacity() 则导致重分配。 若新的 size() 大于 capacity() ,则所有迭代器和引用都被非法化。否则,仅在插入点前的迭代器和引用保持合法。尾后迭代器亦被非法化。
reason: 因为 vector 是自动增长的,在扩大容量之前会复制之前的数据到新的内存区域中,如果还使用旧的地址将会造成错误。

你可能感兴趣的:(C++)