叨叨游戏网
您的当前位置:首页vectorinsert用法

vectorinsert用法

来源:叨叨游戏网
vectorinsert用法

iterator insert (iterator position, const value_type& val); void insert (iterator position, size_type n, const value_type& val);

template

void insert (iterator position, InputIterator first, InputIterator last);

void insert (iterator position, initializer_list il);

第一种用法是插入一个元素到vector中的指定位置。参数position是一个迭代器,指向希望在其之前插入新元素的位置。val是要插入的元素的值。这个函数返回一个指向插入的新元素的迭代器。

第二种用法是插入多个相同的元素到vector中的指定位置。参数n是要插入的元素的个数,val是要插入的元素的值。这个函数不返回任何值。

第三种用法是插入一个范围内的元素到vector中的指定位置。参数position是一个迭代器,指向希望在其之前插入新元素的位置。first和last是迭代器,指定了要插入的元素范围。这个函数不返回任何值。

第四种用法是插入一个初始化列表中的所有元素到vector中的指定位置。参数position是一个迭代器,指向希望在其之前插入新元素的位置。il是初始化列表,包含了要插入的元素。这个函数不返回任何值。

具体来说,insert(函数可以实现的功能有:

1.在指定位置插入一个元素: ```cpp

auto it = vec.begin( + 2; vec.insert(it, 10);

// 现在vec中的元素为 {1, 2, 10, 3, 4} ```

2.在指定位置插入多个相同的元素: ```cpp

auto it = vec.begin( + 2; vec.insert(it, 3, 10);

// 现在vec中的元素为 {1, 2, 10, 10, 10, 3, 4}```

3.在指定位置插入来自另一个容器的一段元素: ```cpp

auto it = vec1.begin( + 2;

vec1.insert(it, vec2.begin(, vec2.end(); // 现在vec1中的元素为 {1, 2, 4, 5, 3} ```

4.在指定位置插入一个初始化列表中的所有元素:

```cpp

auto it = vec.begin( + 2; vec.insert(it, {4, 5});

// 现在vec中的元素为 {1, 2, 4, 5, 3} ```

需要注意的是,insert(函数可能会导致vector的重新分配和复制,从而影响到现有元素的迭代器的有效性。因此,在插入元素后,如果还需要继续操作迭代器,可能需要将插入操作的返回值(即指向新元素的迭代器)重新赋值给相应的迭代器。

另外,insert(函数的时间复杂度为线性,因为在进行插入操作时,需要将插入点之后的所有元素向后移动。如果在vector的尾部插入元素,时间复杂度为常数,因为不需要移动任何元素。

因篇幅问题不能全部显示,请点此查看更多更全内容