vector 容器可以使用 vectorName.insert() 方法插入元素,vectorName.insert() 函数一共有4种重载方法:

第一种 insert() 用法在指定地址插入单个元素

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 int test[] = { 111,222,333,444 };
9 vector<int>num(test, test + 4);
10
11 cout << "==========遍历容器===========" << endl;
12
13 for (int i = 0; i < num.size(); i++)
14 {
15 cout << num.at(i) << endl;
16 }
17
18 num.insert(num.begin(), 888); //初始位置插入 888 ,第一个参数需使用迭代器来确认插入位置
19
20 cout << "===使用 insert() 后遍历容器===" << endl;
21
22 for (int i = 0; i < num.size(); i++)
23 {
24 cout << num.at(i) << endl;
25 }
26
27 return 0;
28 }

打印结果:

由于第一个参数是迭代器,由于是地址,我们也可以对其进行地址加减操作进行元素插入,比如在第二个元素后插入元素,我们用 insert() 可以这样写:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 int test[] = { 111,222,333,444 };
9 vector<int>num(test, test + 4);
10
11 cout << "==========遍历容器===========" << endl;
12
13 for (int i = 0; i < num.size(); i++)
14 {
15 cout << num.at(i) << endl;
16 }
17
18 num.insert(num.begin() + 2, 888); //初始位置插入 888 ,第一个参数需使用迭代器来确认插入位置
19
20 cout << "===使用 insert() 后遍历容器===" << endl;
21
22 for (int i = 0; i < num.size(); i++)
23 {
24 cout << num.at(i) << endl;
25 }
26
27 return 0;
28 }

打印结果:

第二种 insert() 用法在指定地址插入多个元素

最普通的多个元素插入:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 int test[] = { 111,222,333,444 };
9 vector<int>num(test, test + 4);
10
11 cout << "==========遍历容器===========" << endl;
12
13 for (int i = 0; i < num.size(); i++)
14 {
15 cout << num.at(i) << endl;
16 }
17
18 num.insert(num.begin(), 3, 888); //初始位置插入3个 888 ,第一个参数需使用迭代器来确认插入位置
19
20 cout << "===使用 insert() 后遍历容器===" << endl;
21
22 for (int i = 0; i < num.size(); i++)
23 {
24 cout << num.at(i) << endl;
25 }
26
27 return 0;
28 }

打印结果:

与第一种用法一样,由于第一个参数是迭代器地址,可以通过地址加减控制插入位置。

第三种 insert() 用法在指定地址插入其他容器的迭代器

我们也可以将其他同类型容器的元素插入到当前容器,如下代码使用三个迭代器来插入多个元素:

 1 #include <iostream>
2 #include <vector>
3
4 using namespace std;
5
6 int main()
7 {
8 int test[] = { 111,222,333,444 };
9 vector<int>num(test, test + 4);
10 vector<int>num_1(test + 2, test + 4);
11
12 cout << "==========遍历容器===========" << endl;
13
14 for (int i = 0; i < num.size(); i++)
15 {
16 cout << num.at(i) << endl;
17 }
18
19 num.insert(num.begin(), num_1.begin(), num_1.end()); //初始位置插入 从 begin 到 end 的元素
20
21 cout << "===使用 insert() 后遍历容器===" << endl;
22
23 for (int i = 0; i < num.size(); i++)
24 {
25 cout << num.at(i) << endl;
26 }
27
28 return 0;
29 }

打印结果:

===========================================================================================================================

STL—— 容器(vector)的数据插入之 insert()的更多相关文章

  1. 从零开始写STL—容器—vector

    从0开始写STL-容器-vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我 ...

  2. STL—— 容器(vector)数据插入insert()方法 的返回值

    vector 容器下的 insert() 方法拥有返回值,由于insert() 方法拥有4种重载函数,他的返回值不尽相同. 第一种,插入单个元素后的返回值: 1 #include <iostre ...

  3. [C++]STL容器Vector的内存释放

    直接抛出两句话,说明到底应该如何释放Vector占用的内存. “vector的clear不影响capacity,你应该swap一个空的vector.” <Effective STL>中的“ ...

  4. STL容器vector应用注意事项

    [1]提前分配足够空间以免不必要的重新分配和复制代价 关于vector容器重新分配和复制及析构释放的代价,请参见随笔<STL容器之vector>. 应用示例对比代码如下: #include ...

  5. STL容器 vector,list,deque 性能比较

    C++的STL模板库中提供了3种容器类:vector,list,deque对于这三种容器,在觉得好用的同时,经常会让我们困惑应该选择哪一种来实现我们的逻辑.在少量数据操作的程序中随便哪一种用起来感觉差 ...

  6. STL容器 -- Vector

    核心:Vector 是 STL 里的一个向量容器,可以像数组那样进行随机访问,能在尾部插入元素,对于元素的删除和插入可以动态管理内存. 头文件: #include <vector> 构造函 ...

  7. STL - 容器 - vector简单应用

    VectorTest.cpp #include <vector> #include <iostream> #include <string> #include &l ...

  8. STL容器底层数据结构的实现

    C++ STL 的实现: 1.vector      底层数据结构为数组 ,支持快速随机访问   2.list            底层数据结构为双向链表,支持快速增删   3.deque     ...

  9. [转]STL 容器一些底层机制

    1.vector 容器 vector 的数据安排以及操作方式,与 array 非常相似.两者的唯一区别在于空间的运用的灵活性.array 是静态空间,一旦配置了就不能改变,vector 是动态数组.在 ...

随机推荐

  1. SpringIOC基础知识总结

    目录 1.BeanFactory和ApplicationContext的区别: 2.实例化bean的三种方式: ⽅式⼀:使⽤⽆参构造函数 ⽅式⼆:使⽤静态⽅法创建 ⽅式三:使⽤实例化⽅法创建 3.Be ...

  2. Weblogic CVE-2020-2551漏洞复现&CS实战利用

    Weblogic CVE-2020-2551漏洞复现 Weblogic IIOP 反序列化 漏洞原理 https://www.anquanke.com/post/id/199227#h3-7 http ...

  3. 光棍节程序员闯关秀writeup

    答题链接https://1111.segmentfault.com/ 第一关 首先当然是右键查看源码啊 点击链接进入下一关 第二关 还是老样子,右键查看源码 这个key是要放在URL链接里敲回车的 第 ...

  4. 打包错误:Failed to execute goal org.scala-tools:maven-scala-plugin:2.15.2:compile (default) on project MusicProject: wrap: org.apache.commons.exec.ExecuteException:

    错误:Failed to execute goal org.scala-tools:maven-scala-plugin:2.15.2:compile (default) on project Mus ...

  5. 工作一年半被裁掉,机缘巧合拿到阿里P7offer,得亏我看过这份“突击”面试宝典

    前言 不论是校招还是社招都避免不了各种⾯试.笔试,如何去准备这些东⻄就显得格外重要.不论是笔试还是⾯试都是有章可循的,我这个"有章可循"说的意思只是说应对技术⾯试是可以提前准备,所 ...

  6. Camtasia中对给录制的视频添加视觉效果

    视频创作和后期剪辑对很多人来说是一件很头痛的事,对着屏幕一段一段.一帧一帧的进行调整会让人十分的心烦,有时花费了大量时间剪出来的视频质量却不高,让人有一种想砸键盘的冲动. 这种问题,除非是原视频素材质 ...

  7. Spring Boot中的配置

    一.首先使用idea中的Spring Initializr快速创建一个SpringBoot应用,idea会联网自动创建,创建好的结构如下(一些没必要的文件都删了): 其中说一下几个文件夹和文件 sta ...

  8. Jmeter(二十九) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy2(详解教程)

    1.简介 上一篇文中已经对Badboy做了一个基本上详细完整的介绍,这一篇宏哥带你们实战一下,这一篇主要讲解和分享:录制和运行脚本.参数化 首先让我们使用N模式录制一个脚本,测试用例编号为:1.1.1 ...

  9. P3619 魔法

    考虑两个任务 \(1\) 和 \(2\),当前时间为 \(T\),两个任务都要完成. 先完成任务 \(1\) 的条件是 \(T>t_1\) 且 \(T+b_1>t_2\),先完成任务 \( ...

  10. 编程小白必备——主流语言C语言知识点

    对于编程语言来说,经常看到有因为各自支持的语言阵营而互怼的,其实根本没那个必要,都只是一种工具而已.当多数主流语言都会使用时也许你就不会有偏见了,本质不过都是用来描述计算机的一个任务,只是每门语言设计 ...