C++ STL : std::list
来源:互联网 发布:inputselect.js 编辑:程序博客网 时间:2024/05/16 10:21
练习下C++ STL中std::list类的常用方法,方便以后查阅。
如有不正确的地方,请读者及时指正,欢迎转载,谢谢!
#include <assert.h>#include <list>//1) 容器通常都是类模板,在使用时需要传递模板参数来实例化容器类型。//2) 容器内的所有元素都是拷贝,当需要存储自定义类或结构体的时候,容器内通常保存对象的指针。//3) 可通过容器元素的指针,引用或迭代器来修改容器元素。//std::list是一个双向链表//优点:插入、删除或移动元素效率更高;更适合用于某些密集型操作,比如排序算法。//缺点:使用链式存储,元素之间的链式关系占用了一定的存储空间;访问与查询效率较低。bool comp(int n){return n < 3;}bool greater(int a, int b){return a > b;}inline void testList() {std::list<int> list1;//list支持在前端和后端插入元素,删除元素list1.push_back(2);list1.push_front(1);list1.pop_front();list1.pop_back();//判断list是否为空应该使用empty(),而不是size()==0assert(list1.empty());assert(list1.size() == 0);//重新赋值3个4list1.assign(3,4);//清空listlist1.clear();//list插入list1.insert(list1.end(),4);list1.insert(list1.end(),3);list1.insert(list1.end(),2);list1.insert(list1.end(),3);list1.insert(list1.end(),1);//list删除list1.erase(list1.begin());//list排序,默认升序排列,时间复杂度O(nlogn)list1.sort();//为list指定排序算法,自定义比较函数为降序排列list1.sort(greater);//反转listlist1.reverse();//list中删除指定值的元素list1.remove(2);//对list每个元素运用仿函数,满足条件的都删除list1.remove_if(comp);std::list<int> list2;list2.push_back(2);list2.push_back(4);list2.push_back(7);//拼接源链表到目的链表,拼接后源链表中会删除指定迭代器范围的元素list1.splice(list1.begin(),list2,list2.begin());list1.splice(list1.begin(),list2,list2.begin(),list2.end());list1.splice(list1.begin(),list2);assert(list2.empty());list1.sort(std::less<int>());list2.push_back(2);list2.push_back(4);list2.push_back(7);//合并两个有序list,两个list必须都是降序排列,合并之后右侧list被清空list1.merge(list2);assert(list2.empty());//自定义合并算法,以升序合并list1.reverse();list2 = list1;list1.merge(list2,greater);assert(list2.empty());//删除重复的元素,使每一个元素都唯一list1.unique();return;}
0 0
- 【语言-C++】STL std::list的使用
- STL STD::list使用说明
- STL std::list使用说明
- STL STD::list使用说明
- STL STD::list使用说明
- STL STD::list使用说明
- C++ STL : std::list
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- std::vector与std::list的执行速度比较 (C/C++) (STL)
- C++STL隨手筆記(二)List容器的splice及std::partition用法
- C++中STL STD::list使用说明
- C++中STL STD::list使用说明 (ZZ)
- C++中STL STD::list使用说明
- C++中STL STD::list使用说明
- 简单的多线程下载和断点续传
- 线程基础(1)
- 机器学习特征工程总结
- c++重叠I/0
- IE 盒模型和W3C盒模型
- C++ STL : std::list
- 001——Binder 机制详解—Binder IPC 程序结构
- R语言决策树概论
- Coder_DJ 自定义tableViewCell的侧滑删除按钮
- C++中的可调用对象
- 极其简单的一个JSP小功能+空指针异常Bug解析(内容更新)
- TextView设置个别字体样式
- 线程基础(2)
- vc程序可以运行但没结果