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

list基础用法

list基础用法

  • 1.list的访问就不能用下标+[]了,用迭代器
  • 2.emplace_back()几乎是与push_back()用法一致,但也有差别
  • 3.insert(),erase()的用法
  • 4.reverse()
  • 5.排序
  • 6.合并
  • 7.unique()(去重)
  • 8.splice剪切再粘贴

1.list的访问就不能用下标+[]了,用迭代器

void test1()
{list<int>lt;//list要带头文件,同理,vector,string也是lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);//list的访问就不能用下标+[]了//用迭代器list<int>::iterator it = lt.begin();while (it != lt.end()){cout << *it;it++;}cout << endl;for (auto e : lt){cout << e;} cout << endl;}

2.emplace_back()几乎是与push_back()用法一致,但也有差别


void test2()
{list<A>lt;A a1(1, 2);lt.push_back(a1);//又名lt.push_back(A(1, 1));//匿名lt.emplace_back(a1);lt.emplace_back(A(1, 1));//差别://push_back()只能传一个参数,emplace_back()支持直接传构造A的对象参数lt.emplace_back(3, 4);}

3.insert(),erase()的用法

void test_list3()
{list<int> lt;lt.push_back(1);lt.push_back(2);lt.push_back(3);lt.push_back(4);lt.push_back(5);lt.push_back(6);//insert()auto it = lt.begin();int k = 3;while (k--){++it;}lt.insert(it, 30);for (auto e : lt){cout << e << " ";}cout << endl;//erase()int x = 0;cin >> x;it = find(lt.begin(), lt.end(), x);if (it != lt.end()){lt.erase(it);}for (auto e : lt){cout << e << " ";}cout << endl;
}

4.reverse()

     lt.reverse();//orreverse(lt.begin(), lt.end());

5.排序

    // 升序lt.sort();//orless<int> ls;lt.sort(ls);//降序greater<int> gt;lt.sort(ls);//orlt.sort(greater<int>());

关于链表排序:链表排序效率非常的低。

6.合并

std::list<double> first, second;first.push_back(3.1);first.push_back(2.2);first.push_back(2.9);second.push_back(3.7);second.push_back(7.1);second.push_back(1.4);first.sort();second.sort();first.merge(second);//second就为空了

7.unique()(去重)

前提:必须保证有序

void test5()
{list<int> lt;lt.push_back(1);lt.push_back(20);lt.push_back(3);lt.push_back(5);lt.push_back(5);lt.push_back(4);lt.push_back(5);lt.push_back(6);lt.sort();for (auto e : lt){cout << e << " ";}cout << endl;lt.unique();for (auto e : lt){cout << e << " ";}cout << endl;
}

8.splice剪切再粘贴

void test6()
{// 一个链表节点转移给另一个链表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 element
}

相关文章:

  • Docker疑难杂症解决指南
  • ThingsBoard3.9.1 MQTT Topic(4)
  • python常用算法总结(下)
  • 基于STM32、HAL库的TLV320AIC3101IRHBR音频接口芯片驱动程序设计
  • [250512] Node.js 24 发布:ClangCL 构建,升级 V8 引擎、集成 npm 11
  • webservice获取全国省份区县编码(拼音全拼+拼音简写)
  • linux 抓包工具tcpdump使用小记(使用时注意权限和系统资源)
  • OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——mqtt库
  • 时间序列预测建模的完整流程以及数据分析【学习记录】
  • 从零开始了解数据采集(二十七)——什么IIOT平台
  • 源码分析之Leaflet中GeoJSON模块
  • 信息学奥赛一本通 1535:【例 1】数列操作
  • 信奥赛-刷题笔记-队列篇-T2-P1540机器翻译和P2952Cow Line S
  • 品种亮相!贵州金桥药业筑牢市场竞争护城河
  • MATLAB语音情感识别神经网络方法
  • 从零开始:使用 Vue-ECharts 实现数据可视化图表功能
  • INT202 Complexity of Algroithms 算法的复杂度 Pt.7 NP-Completeness NP完全性
  • SwarmUI 基于.NET开发的开源AI图像生成WEB用户界面系统
  • 市政务服务技能竞赛流程策划方案
  • 【计算机视觉】OpenCV实战项目:基于Tesseract与OpenCV的字符识别系统深度解析
  • 深圳中院回应“退休夫妻月入1.2万负债1.2亿”:其自述因经营不善负债
  • “远践”项目启动公益生态圈,上海青少年公益力量蓬勃生长
  • 复旦大学与上海杨浦共建市东医院
  • 马上评丨75万采购300元设备,仅仅终止采购还不够
  • 《审判》|“被告”的魅力:K在等什么?
  • 第1现场 | 印巴停火次日:当地民众逐渐恢复正常生活