21xrx.com
2024-12-22 21:15:57 Sunday
登录
文章检索 我的文章 写文章
C++中vector容器的insert函数使用方法详解
2023-07-07 04:01:08 深夜i     --     --
C++ vector insert函数 容器 使用方法

C++中的vector是一种动态数组容器,它允许用户动态地添加或删除元素。其中的insert函数是vector容器中常用的函数之一。该函数的作用是在指定位置插入一个或多个元素。下面详细介绍insert函数的使用方法。

1. insert函数的语法

insert函数的语法如下:


iterator insert (const_iterator position, const value_type& val);

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

template <class InputIterator>

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

iterator insert (const_iterator position, value_type&& val);

iterator insert (const_iterator position, initializer_list<value_type> il);

其中,position表示插入的位置,可以是迭代器或指针;val为需要插入的元素;n为需要插入的相同元素的数量;first和last表示一个区间,表示需要插入的元素序列;il为初始化列表。

2. insert函数的用法

(1)在指定位置插入一个元素

例如,我们有一个存储int类型的vector容器v,现在需要在下标为3的位置插入元素5,可以采用以下方法:


v.insert(v.begin() + 3, 5);

其中,v.begin()表示vector的迭代器起始位置,加上3即代表了下标为3的位置。函数执行完毕后,容器v的元素序列为:


[0, 1, 2, 5, 3, 4]

(2)在指定位置插入多个相同元素

如果需要在指定位置插入多个相同的元素,可以采用以下方法:


v.insert(v.begin() + 3, 3, 5);

其中,3代表需要插入3个元素,5代表插入的元素值为5。函数执行完毕后,容器v的元素序列为:


[0, 1, 2, 5, 5, 5, 3, 4]

(3)在指定位置插入一个元素序列

如果需要在指定位置插入一个元素序列,可以采用以下方法:


vector<int> v1 = 20;

v.insert(v.begin() + 3, v1.begin(), v1.end());

其中,将存储10、20、30的v1序列插入到v容器的下标为3的位置。函数执行完毕后,容器v的元素序列为:


[0, 1, 2, 10, 20, 30, 5, 3, 4]

(4)在指定位置插入一个右值元素

C++11新特性为右值引用,如果需要在指定位置插入一个右值元素val,可以使用以下方法:


v.insert(v.begin() + 3, move(val));

其中,move(val)将val的右值解释为val的左值引用,方便进行移动语义。函数执行完毕后,容器v的元素序列为:


[0, 1, 2, val, 5, 3, 4]

(5)在指定位置插入一个初始化列表

使用以下方法可以在指定位置插入一个初始化列表il:


v.insert(v.begin() + 3, 10);

其中,初始化列表中包含了10、20、30三个元素。函数执行完毕后,容器v的元素序列为:


[0, 1, 2, 10, 20, 30, 5, 3, 4]

3. 总结

insert函数是vector容器中一个重要的函数,可以在指定位置插入一个或多个元素,使用非常方便。需要注意的是,插入元素时要保证容器有足够的空间,否则可能触发realloc操作,影响程序性能。另外,插入元素后容器的迭代器可能会失效,需要重新获取迭代器进行操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复