STL——容器(List)List 的数据元素插入和删除操作
push_back(elem);
//在容器尾部加入一个元素
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "初始遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17 listInt.push_back(444);
18 cout << "push_back后遍历 listInt:";
19 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23 cout << endl;
24
25 return 0;
26 }
打印结果:

pop_back();
//删除容器中最后一个元素
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "初始遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17 listInt.pop_back();
18 cout << "pop_back 后遍历 listInt:";
19 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23 cout << endl;
24
25 return 0;
26 }
打印结果:

push_front(elem);
//在容器开头插入一个元素
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "初始遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17 listInt.push_front(0);
18 cout << "push_front 后遍历 listInt:";
19 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23 cout << endl;
24
25 return 0;
26 }
打印结果:

pop_front();
//从容器开头移除第一个元素
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "初始遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17 listInt.pop_front();
18 cout << "pop_front 后遍历 listInt:";
19 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23 cout << endl;
24
25 return 0;
26 }
打印结果:

insert(pos, elem);
//在pos位置插elem元素的拷贝,返回新数据的位置
这里需要注意一点,list 不可以随机存取元素,所以不支持 at.(position)函数与[]操作符。可以对其迭代器执行++和--,但是不能这样操作迭代器:it + 3
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "初始遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17
18 cout << "insert 后,用 insert 的返回值遍历 listInt:";
19 for (list<int>::iterator it = listInt.insert(++listInt.begin(), 888); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23 cout << endl;
24 cout << "最终遍历 listInt:";
25 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
26 {
27 cout << *it << " ";
28 }
29
30 return 0;
31 }
打印结果:

insert(pos, n, elem);
//在pos位置插入n个elem数据,返回新数据的第一个数据的位置(这个有没有返回值是编译器版本决定,早起版本的编译器没有返回值)
这里需要注意一点,list 不可以随机存取元素,所以不支持 at.(position)函数与[]操作符。可以对其迭代器执行++和--,但是不能这样操作迭代器:it + 3
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "初始遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17
18 cout << "insert 后,用 insert 的返回值遍历 listInt:";
19 for (list<int>::iterator it = listInt.insert(++listInt.begin(), 2, 888); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23 cout << endl;
24 cout << "最终遍历 listInt:";
25 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
26 {
27 cout << *it << " ";
28 }
29
30 return 0;
31 }
打印结果:

insert(pos, beg, end);
//在pos位置插入[beg,end)区间的数据,下面代码我举两种使用方法,一种是使用迭代器插入,另一种是插入数组
这里需要注意一点,list 不可以随机存取元素,所以不支持 at.(position)函数与[]操作符。可以对其迭代器执行++和--,但是不能这样操作迭代器:it + 3
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 int num_1[] = { 666,777,888 };
10 list<int> listInt(num, num + size(num));
11 list<int> listInt_A(2, 666);
12 cout << "初始遍历 listInt:";
13 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
14 {
15 cout << *it << " ";
16 }
17 cout << endl;
18
19
20 cout << "insert 后,用 insert 的返回值遍历 listInt:";
21 for (list<int>::iterator it = listInt.insert(++listInt.begin(), listInt_A.begin(), listInt_A.end()); it != listInt.end(); it++)
22 {
23 cout << *it << " ";
24 }
25
26 cout << endl;
27 cout << "最终遍历 listInt:";
28 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
29 {
30 cout << *it << " ";
31 }
32 cout << endl << endl;
33
34
35 //当然这里也可以插入数组
36 cout << "使用 insert 插入数组,然后用 insert 的返回值遍历 listInt:" << endl;
37 for (list<int>::iterator it = listInt.insert(++listInt.begin(), num_1, num_1 + size(num_1)); it != listInt.end(); it++)
38 {
39 cout << *it << " ";
40 }
41
42 cout << endl;
43 cout << "最终遍历 listInt:";
44 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
45 {
46 cout << *it << " ";
47 }
48
49 return 0;
50 }
打印结果:

clear();
//移除容器的所有数据
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333 };
9 list<int> listInt(num, num + size(num));
10 cout << "clear 前遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16 cout << "clear 前 listInt.size() = " << listInt.size() << endl;
17
18
19 listInt.clear();
20 cout << "clear 后遍历 listInt:";
21 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
22 {
23 cout << *it << " ";
24 }
25 cout << endl;
26 cout << "clear 后 listInt.size() = " << listInt.size() << endl;
27
28 return 0;
29 }
打印结果:

erase(beg, end);
//删除[beg,end)区间的数据,返回下一个数据的位置
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333,444,555,666 };
9 list<int> listInt(num, num + size(num));
10 cout << "erase 前遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17
18 cout << "erase 后,用其返回值遍历 listInt:";
19 for (list<int>::iterator it = listInt.erase(++listInt.begin(), --listInt.end()); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23
24 cout << endl;
25 cout << "erase 后遍历 listInt:";
26 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
27 {
28 cout << *it << " ";
29 }
30
31 return 0;
32 }
打印结果:

erase(pos);
//删除pos位置的数据,返回下一个数据的位置
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,333,444,555,666 };
9 list<int> listInt(num, num + size(num));
10 cout << "erase 前遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17
18 cout << "erase 后,用其返回值遍历 listInt:";
19 for (list<int>::iterator it = listInt.erase(++listInt.begin()); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23
24 cout << endl;
25 cout << "erase 后遍历 listInt:";
26 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
27 {
28 cout << *it << " ";
29 }
30
31 return 0;
32 }
打印结果:

remove(elem);
//删除容器中所有与elem值匹配的元素
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,111,333,111,444 };
9 list<int> listInt(num, num + size(num));
10 cout << "erase 前遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17 listInt.remove(111);
18 cout << "remove 后遍历 listInt:";
19 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
20 {
21 cout << *it << " ";
22 }
23
24 return 0;
25 }
打印结果:

还有一种遍历删除法:
1 #include <iostream>
2 #include <list>
3
4 using namespace std;
5
6 int main()
7 {
8 int num[] = { 111,222,111,333,111,444 };
9 list<int> listInt(num, num + size(num));
10 cout << "erase 前遍历 listInt:";
11 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
12 {
13 cout << *it << " ";
14 }
15 cout << endl;
16
17 for (list<int>::iterator it = listInt.begin(); it != listInt.end();)
18 {
19 if (*it == 111)
20 {
21 it = listInt.erase(it);
22 }
23 else
24 {
25 it++;
26 }
27 }
28
29 cout << "erase 后遍历 listInt:";
30 for (list<int>::iterator it = listInt.begin(); it != listInt.end(); it++)
31 {
32 cout << *it << " ";
33 }
34
35 return 0;
36 }
打印结果:

======================================================================================================================
STL——容器(List)List 的数据元素插入和删除操作的更多相关文章
- [剑指offer]09用两个栈实现队列插入和删除操作,C++实现
原创博文,转载请注明出处! # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 用两个栈实现队列的插入和删除操作 2.思路 栈服从先入后出的原则处理数据,队列服从先入先出的原则处理数 ...
- Java创建二叉搜索树,实现搜索,插入,删除操作
Java实现的二叉搜索树,并实现对该树的搜索,插入,删除操作(合并删除,复制删除) 首先我们要有一个编码的思路,大致如下: 1.查找:根据二叉搜索树的数据特点,我们可以根据节点的值得比较来实现查找,查 ...
- STL——容器(Map & multimap)的插入与迭代器
1. 容器(Map & multimap)的插入 map.insert(...); //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式 ...
- jquery元素插入、删除、清空
1)jquery元素插入 <!--位置1--> <div id='test'> <!--位置2--> <div>测试</div> <! ...
- jquery元素插入、删除、清空、找父子级元素
1)jquery元素插入 <!--位置1--> <div id='test'> <!--位置2--> <div>测试</div> <! ...
- STL—— 容器(vector)数据插入insert()方法 的返回值
vector 容器下的 insert() 方法拥有返回值,由于insert() 方法拥有4种重载函数,他的返回值不尽相同. 第一种,插入单个元素后的返回值: 1 #include <iostre ...
- STL——容器(deque)deque 的插入 insert()
deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置. 1 #include <iostream> 2 #include <d ...
- Java BLOB 数据的插入与读取 操作
package com.lw.database; import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...
- Thinkphp 数据的修改及删除操作
一.数据修改操作 save() 实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式: a) $goods = D(“Goods ...
随机推荐
- 重写ceph-lazy
前言 这个工具最开始是从sebastien的blog里面看到的,这个是 Gregory Charot(工具的作者)写的,通常我们在获取一个ceph的信息的时候,需要敲一连串的命令去获得自己需要的信息, ...
- Gulp自动化构建的基本使用
Study Notes 本博主会持续更新各种前端的技术,如果各位道友喜欢,可以关注.收藏.点赞下本博主的文章. Gulp 用自动化构建工具增强你的工作流程! gulp 将开发流程中让人痛苦或耗时的任务 ...
- xss攻击与防范
xss攻击方式以及防范 通常来说,网站一般都是有着,用户注册,用户登录,实名认证等等这些需要用户把信息录入数据库的接口 xss找的就是这种接口,他们可以在传递数据的时候,传递恶意的 script ...
- Android ALSPS驱动分析
一.alsps的初始化函数和重要结构体 epl2182_init // Epl2182.c (kernel-3.10\drivers\misc\mediatek\alsps\epl2182-new) ...
- Mac电脑疑似中毒该怎么应对处理
Mac电脑作为相对封闭的一个系统,它会中毒吗?如果有一天Mac电脑产生了疑似中毒或者遭到恶意不知名攻击的现象,那又应该如何从容应对呢?这些问题都是小编使用Mac系统一段时间后产生的疑惑,通过一番搜索研 ...
- 什么是NTFS文件格式
说到磁盘格式,想必大家对于NTFS格式并不陌生.我们使用的u盘等硬盘设备很多都应用了此格式.NTFS文件格式究竟是什么?它都有哪些特点?今天,小编将利用这篇文章为大家进行介绍. 一.什么是NTFS文件 ...
- 使用Camtasia来消除视频中的声音
大多数情况下,我们在录制电脑屏幕的时候都会把音频输出也一起录制下来,但也会有时候要后期进行重新配音,需要把事先一同录制的音频消除掉,今天小编来给大家说一说如何消除这种的视频声音. 首先打开Camtas ...
- HarmonyOS Java UI之DependentLayout布局示例
DependentLayout简介 DependentLayout意为相对位置布局,与DirectionalLayout相比较有更多的排布方式,每个组件可以指定相对于其他同级组件的位置,也可以指定相对 ...
- 走进flex布局
简介:flex 是一个CSS的display 属性中新添加一个值. 随着inline-flex的使用,它将使它适用的元素成为一个flex container(伸缩容器),而这个元素的每个子元素将成为 ...
- Tiops评测
一.前言 前几天参加了一个新钛云服公有课,才了解到这家公司有发布自己产品Tiops云运维堡垒机. 在此之前有了解过JumpServer,可以完美支持windows和linux server运维管理,以 ...