当前位置: 首页 > news >正文

8.list的使用

一.构造函数以及赋值

二.迭代器部分

三.容量和元素

四.成员函数

五.list的使用

void test_list1()
{list<int> lt1 = { 10,2,3,3,4,3,5,6};list<int>::iterator it = lt1.begin();while (it != lt1.end()){cout << *it << " ";++it;}cout << endl;for (auto e : lt1){cout << e << " ";}cout << endl;//sort(lt1.begin(), lt1.end());lt1.sort();for (auto e : lt1){cout << e << " ";}cout << endl;lt1.sort(greater<int>());for (auto e : lt1){cout << e << " ";}cout << endl;lt1.unique();for (auto e : lt1){cout << e << " ";}cout << endl;
}

但是list是双向迭代器,所以list不能使用std::sort

list里面的sort()使用的是归并排序

六.测试vector和list排序时的性能

void test_op1()
{srand(time(0));const int N = 10000000;list<int> lt1;list<int> lt2;vector<int> v;for (int i = 0; i < N; ++i){auto e = rand() + i;lt1.push_back(e);v.push_back(e);}int begin1 = clock();// 排序sort(v.begin(), v.end());int end1 = clock();int begin2 = clock();lt1.sort();int end2 = clock();printf("vector sort:%d\n", end1 - begin1);printf("list sort:%d\n", end2 - begin2);
}

几乎vector排序的销毁几乎是list的3倍

void test_op2()
{srand(time(0));const int N = 10000000;list<int> lt1;list<int> lt2;for (int i = 0; i < N; ++i){auto e = rand()+i;lt1.push_back(e);lt2.push_back(e);}int begin1 = clock();// 拷贝vectorvector<int> v(lt2.begin(), lt2.end());// 排序sort(v.begin(), v.end());// 拷贝回lt2lt2.assign(v.begin(), v.end());int end1 = clock();int begin2 = clock();lt1.sort();int end2 = clock();printf("list copy vector sort copy list sort:%d\n", end1 - begin1);printf("list sort:%d\n", end2 - begin2);
}

上面这个是先将list拷贝到vector排序完之后再拷贝会到list,结果用时还少

七.splice接口使用

int main()
{std::list<int> mylist1, mylist2;std::list<int>::iterator it;// set some initial values:for (int i = 1; i <= 4; ++i)mylist1.push_back(i);      // mylist1: 1 2 3 4for (int i = 1; i <= 3; ++i)mylist2.push_back(i * 10);   // mylist2: 10 20 30it = mylist1.begin();++it;                         // points to 2mylist1.splice(it, mylist2); // mylist1: 1 10 20 30 2 3 4// mylist2 (empty)// "it" still points to 2 (the 5th elementreturn 0;
}

自己插入自己,如下:

int main()
{std::list<int> mylist1;for (int i = 1; i <= 4; ++i)mylist1.push_back(i);      // mylist1: 1 2 3 4auto it = find(mylist1.begin(), mylist1.end(), 3);mylist1.splice(mylist1.begin(), mylist1, it);return 0;
}

如果要将后面的全部转移,就不要写三个参数了,只转移一个就要写第三个参数

#include <iostream>
#include <list>using namespace std;// 打印链表内容的辅助函数
void printList(const list<int>& l, const string& name) {cout << name << ": ";for (int num : l) {cout << num << " ";}cout << endl;
}int main() {list<int> list1 = {1, 2, 3};list<int> list2 = {4, 5, 6};printList(list1, "list1初始值");printList(list2, "list2初始值");// 1. 将list2的所有元素转移到list1的末尾list1.splice(list1.end(), list2);printList(list1, "list1转移后");  // 1 2 3 4 5 6printList(list2, "list2转移后");  // 空// 重新给list2赋值list2 = {7, 8, 9};printList(list2, "list2重新赋值");  // 7 8 9// 2. 将list2中第一个元素转移到list1的开头list1.splice(list1.begin(), list2, list2.begin());printList(list1, "list1转移单个元素后");  // 7 1 2 3 4 5 6printList(list2, "list2转移单个元素后");  // 8 9// 3. 将list2的所有元素转移到list1中值为3的元素前面auto it = find(list1.begin(), list1.end(), 3);if (it != list1.end()) {list1.splice(it, list2, list2.begin(), list2.end());}printList(list1, "list1转移范围元素后");  // 7 1 2 8 9 3 4 5 6printList(list2, "list2转移范围元素后");  // 空return 0;
}
http://www.dtcms.com/a/490049.html

相关文章:

  • 网页跳转github镜像
  • 安灯系统(Andon)如何为汽车工厂打造零延迟响应
  • C++(条件判断与循环)
  • 温州建设局网站首页中国企业名录黄页
  • linux/centos迁移conda文件夹
  • Quill 富文本编辑器 功能介绍,使用场景说明,使用示例演示
  • 网站生成器怎么做网站建设与管理实训主要内容
  • 网站信用认证可以自己做吗稀奇古怪好玩有用的网站
  • MySQL 基础语句
  • Linux中CPU初始化和调度器初始化函数的实现
  • MATLAB基于ST-CNN-SVM的轴承故障诊断,S变换和卷积神经网络结合支持向量机
  • 在优豆云免费云服务器上初探SSH与SCP的便捷操作
  • MySQL数据库:软件、相关知识和基本操作
  • Bahdanau注意力
  • 重生之我在大学自学鸿蒙开发第七天-《AI语音朗读》
  • Spring AI 1.0 GA 深度解析:Java生态的AI革命已来
  • Linux网络之----TCP网络编程
  • 【零基础学习CAPL语法】——writeLineEx() 函数
  • 计算机网络数据链路层
  • 做网站选什么专业门户网站开发步骤博客
  • 论文写作 24: 全文保持同样的节奏
  • 洛谷 P1438 无聊的数列 题解
  • iOS混淆与IPA加固实战手记,如何构建苹果应用防反编译体系
  • 想抓PostgreSQL里的慢SQL?pg_stat_statements基础黑匣子和pg_stat_monitor时间窗,谁能帮你更准揪出性能小偷?
  • 把 iOS 26 的「Liquid Glass」带进 React Native
  • 基于物理信息的神经网络求解偏微分方程反问题的综合优化策略
  • 工地佩戴安全帽检测-目标检测数据集
  • 广东网站备案查询系统企业网站带后台
  • 知名的集团门户网站建设费用我要自学网网站建设
  • 2025 年 10 月科技前沿全景:从量子跃迁到生命重构的文明拐点