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 的数据元素插入和删除操作的更多相关文章

  1. [剑指offer]09用两个栈实现队列插入和删除操作,C++实现

    原创博文,转载请注明出处! # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 用两个栈实现队列的插入和删除操作 2.思路 栈服从先入后出的原则处理数据,队列服从先入先出的原则处理数 ...

  2. Java创建二叉搜索树,实现搜索,插入,删除操作

    Java实现的二叉搜索树,并实现对该树的搜索,插入,删除操作(合并删除,复制删除) 首先我们要有一个编码的思路,大致如下: 1.查找:根据二叉搜索树的数据特点,我们可以根据节点的值得比较来实现查找,查 ...

  3. STL——容器(Map & multimap)的插入与迭代器

    1. 容器(Map & multimap)的插入 map.insert(...);    //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式 ...

  4. jquery元素插入、删除、清空

    1)jquery元素插入 <!--位置1--> <div id='test'> <!--位置2--> <div>测试</div> <! ...

  5. jquery元素插入、删除、清空、找父子级元素

    1)jquery元素插入 <!--位置1--> <div id='test'> <!--位置2--> <div>测试</div> <! ...

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

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

  7. STL——容器(deque)deque 的插入 insert()

    deque.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置. 1 #include <iostream> 2 #include <d ...

  8. Java BLOB 数据的插入与读取 操作

    package com.lw.database; import java.io.FileInputStream; import java.io.FileOutputStream; import jav ...

  9. Thinkphp 数据的修改及删除操作

    一.数据修改操作 save()  实现数据修改,返回受影响的记录条数 具体有两种方式实现数据修改,与添加类似(数组.AR方式) 1.数组方式: a)         $goods = D(“Goods ...

随机推荐

  1. cephfs根据存储池显示df容量

    前言 如果用cephfs比较多,应该都知道,在cephfs的客户端进行mount以后,看到的容量显示的是集群的总的容量,也就是你的总的磁盘空间是多少这个地方显示的就是多少 这个一直都是这样显示的,我们 ...

  2. 02Java写一个hello world

    新建一个.text文件 输入并保存如下代码: public class HelloWorld{ public static void main(String[] args){ System.out.p ...

  3. 关于多线程--网络编程 -- 注解反射的一点笔记(JAVA篇)

    一 . 线程 java开启一个线程的方法(三种) 方法一:继承Thread类并New一个线程对象 步骤: 1):定义一个类A继承于Java.lang.Thread类. class TestThread ...

  4. JVM全方位解读(附面试题)

    java中就虚拟机是其他语言编写的(C语言+汇编语言,因此,JVM最常出现的攻击就是buffer overflow),如javac命令等,而java api是java写的,大多开源在openjdk,j ...

  5. 深度解析:java必须掌握的知识点——类的重用

    类继承的概念和语法 类继承的概念 根据已有类来定义新类,新类拥有已有类的所有功能. Java只支持类的单继承,每个子类只能有一一个直接超类(父类). 超类是所有子类的公共属性及方法的集合,子类则是超类 ...

  6. 为什么要选择ABBYY FineReader 14?

    FineReader 是一款一体化的 OCR 和PDF编辑转换器,用于在处理文档时提高业务生产力.以人工智能为基础的 FineReader 14 提供强大且易用的工具来帮助您获得纸质文档和 PDF 中 ...

  7. FL studio系列教程(十四):如何在FL Studio播放列表中排列样式

    我们在FL Studio中做好了节奏样式后就可以在播放列表窗口中进行乐曲的编排了.刚接触这款软件的同学肯定会对如何编排比较陌生但也比较憧憬的,因为它是从一个窗口到另一个窗口中的操作.其实明白了这里的知 ...

  8. kakafka - 为CQRS而生fka - 为CQRS而生

    前段时间跟一个朋友聊起kafka,flint,spark这些是不是某种分布式运算框架.我自认为的分布式运算框架最基础条件是能够把多个集群节点当作一个完整的系统,然后程序好像是在同一台机器的内存里运行一 ...

  9. linux(centos7.x)安装jdk

    一.下载与安装 下载地址:链接:https://pan.baidu.com/s/1g7MF1xqlOxWnLGf2shl3NA   提取码:epae  下载完成后将安装包上传到linxu环境中,并将其 ...

  10. I/O中的 同步异步,阻塞非阻塞

    I/O中的同步和异步的概念和线程中不太一样. I/O写的时候,默认是写到页高速缓存就返回的,然后异步刷到磁盘上.而同步的I/O指的是改动写到磁盘上之后才会返回结果.可以通过fsync(),和fdata ...