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 ...
随机推荐
- 支持jewel版本的calamari
之前测试了下,发现calamari不支持jewel版本的,是因为接口了有了一些变化,在提出这个问题后,作者给出了回答,说肯定会支持的,并且做了一点小的改动,就可以支持了,这个作者merge了到了git ...
- matlab 向量操作作业
写出下列语句的计算结果及作用 clear 清除所有变量 clc 清屏 A = [2 5 7 1 3 4]; 创建行向量并赋值 odds = 1:2:length(A); 冒号操 ...
- LeetCode-Python-删除链表解题思路
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. image.png 解题思路: 使用双指针,快指针与慢指针的间隔为n: 涉及到最后要删除慢指针的节点,为了方便,先开辟一个nod ...
- 【进阶之路】Redis基础知识两篇就满足(一)
导言 大家好,我是南橘,一名练习时常两年半的java练习生,这是我在博客园的第一篇文章,当然,都是要从别处搬运过来的,不过以后新的文章也会在博客园同步发布,希望大家能多多支持^_^ 这篇文章的出现,首 ...
- 三步删除U深度,老毛桃,大白菜捆绑软件!!
①需要下载一个软件Fbinst Tool(万能U盘制作工具).链接:http://pan.baidu.com/s/1mim9Zxm 密码:7poo②插入U盘,直接打开Fbinst Tool.首先是U深 ...
- sqlilab less1-less10
less-1 参数被单引号包裹,加单引号,闭合后绕过 less-2 参数没有被包裹,直接带入查询,不需要闭合 less-3 参数被 ('$id') 包裹,需要将他闭合 less-4 参数被小括号和双引 ...
- Hadoop window提交出错:Permission denied
错误信息: Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlExcep ...
- 标准库之time,random,sys,os
# import time # print(time.time()) # 时间戳 # print(time.mktime(time.localtime())) # 结构化时间转换为时间戳 # prin ...
- CSP2020 游记
Day -28 后天就初赛了,考了一套模拟题,自闭,心态爆炸,感觉退役不远了 Day -26(初赛) 香农是谁??? 手写随机nth_element与O(n)的哈希表??? 阅读程序T2时间复杂度分析 ...
- JUC并发工具包之CyclicBarrier
1.简介 CyclicBarrier是一个同步器,允许多个线程等待彼此直到达一个执行点(barrier). CyclicBarrier都是在多个线程必须等到彼此都到达同一个执行点后才执行一段逻辑时才被 ...