温州微网站制作多少钱,做网站的一些好处,编程软件排行榜,和布克赛尔网站建设本章讲一下如何使用list#xff0c;代码在文章末
目录
一、list介绍
二、增
三、删
四、查和改
五、交换
六、代码 一、list介绍
首先还是看一看官方文档的介绍如下图#xff0c;如下方五点#xff1a;
1. list是可以在常数范围内在任意位置进行插入和删除的序列式…本章讲一下如何使用list代码在文章末
目录
一、list介绍
二、增
三、删
四、查和改
五、交换
六、代码 一、list介绍
首先还是看一看官方文档的介绍如下图如下方五点
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器并且该容器可以前后双向迭代。
2. list的底层是双向链表结构双向链表中每个元素存储在互不相关的独立节点中在节点中通过指针指向 其前一个元素和后一个元素。
3. list与forward_list非常相似最主要的不同在于forward_list是单链表只能朝前迭代已让其更简单高 效。
4. 与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率 更好。
5. 与其他序列式容器相比list和forward_list最大的缺陷是不支持任意位置的随机访问比如要访问list 的第6个元素必须从已知的位置(比如头部或者尾部)迭代到该位置在这段位置上迭代需要线性的时间 开销list还需要一些额外的空间以保存每个节点的相关联信息(对于存储类型较小元素的大list来说这 可能是一个重要的因素)
在图二就是一些参数可以明显看到没有【】因为list就是相当于一个带头双向链表参数和之前学习的差不多就不详细讲了。 二、增
如下方代码就是就创建了一个链表为l1和l2进行尾插和头插然后在利用for进行打印。 void Test1() { listint l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); l1.push_back(4); listint l2; l2.push_front(1); l2.push_front(2); l2.push_front(3); l2.push_front(4); for (auto li : l1) { cout li ; } cout endl; for (auto li : l2) { cout li ; } cout endl; } 三、删
如下就是先尾删打印在进行头删打印代码和测试如下。 void Test2() { listint l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); l1.push_back(4); l1.push_back(5); l1.push_back(6); for (auto li : l1) { cout li ; } cout endl; l1.pop_back(); l1.pop_back(); for (auto li : l1) { cout li ; } cout endl; l1.pop_front(); l1.pop_front(); for (auto li : l1) { cout li ; } cout endl; } 四、查和改
下方代码就是利用find函数进行插在找到了3然后返回位置给pos在这个地方进行插入30然后在查找30再把这个删掉。 void Test3() { listint l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); l1.push_back(4); l1.push_back(5); l1.push_back(6); for (auto li : l1) { cout li ; } cout endl; auto pos find(l1.begin(),l1.end(),3); l1.insert(pos, 30); for (auto li : l1) { cout li ; } cout endl; pos find(l1.begin(), l1.end(), 30); l1.erase(pos); for (auto li : l1) { cout li ; } cout endl; } 五、交换
交换两个链表的数值这个原理就是交换头指针如下方代码所示。 void Test4() { listint l1; l1.push_back(1); l1.push_back(2); l1.push_back(3); l1.push_back(4); l1.push_back(5); l1.push_back(6); listint l2; l2.push_back(10); l2.push_back(20); l2.push_back(30); l2.push_back(40); l2.push_back(50); l2.push_back(60); for (auto li : l1) { cout li ; } cout endl; for (auto li : l2) { cout li ; } cout endl; l1.swap(l2); for (auto li : l1) { cout li ; } cout endl; for (auto li : l2) { cout li ; } cout endl; } 六、代码
#define _CRT_SECURE_NO_WARNINGS 1
#include iostream
#include list
using namespace std;void Test1()
{listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);listint l2;l2.push_front(1);l2.push_front(2);l2.push_front(3);l2.push_front(4);for (auto li : l1){cout li ;}cout endl;for (auto li : l2){cout li ;}cout endl;
}void Test2()
{listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);l1.push_back(5);l1.push_back(6);for (auto li : l1){cout li ;}cout endl;l1.pop_back();l1.pop_back();for (auto li : l1){cout li ;}cout endl;l1.pop_front();l1.pop_front();for (auto li : l1){cout li ;}cout endl;
}void Test3()
{listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);l1.push_back(5);l1.push_back(6);for (auto li : l1){cout li ;}cout endl;auto pos find(l1.begin(),l1.end(),3);l1.insert(pos, 30);for (auto li : l1){cout li ;}cout endl;pos find(l1.begin(), l1.end(), 30);l1.erase(pos);for (auto li : l1){cout li ;}cout endl;
}void Test4()
{listint l1;l1.push_back(1);l1.push_back(2);l1.push_back(3);l1.push_back(4);l1.push_back(5);l1.push_back(6);listint l2;l2.push_back(10);l2.push_back(20);l2.push_back(30);l2.push_back(40);l2.push_back(50);l2.push_back(60);for (auto li : l1){cout li ;}cout endl;for (auto li : l2){cout li ;}cout endl;l1.swap(l2);for (auto li : l1){cout li ;}cout endl;for (auto li : l2){cout li ;}cout endl;
}int main()
{Test4();
}