1.关键概述

  list 是定义在 namespace::std 的模板,声明在 <list> ,存储结构是 双向链表, 提供的 正向和反向迭代器。

2.构造list对象

  1. list<int> intlist0;  // 构造一个空list
  2. list<);  // 构造3个元素的 list,元素使用默认构造
  3. list<, );  // 构造3个元素的list, 元素初始化为3
  4. list<, , intlist2.get_allocator());  // 构造一个3元素list,初始化为1,并使用intlist的内存分配策略
  5. list<int> intlist4(intlist2);  // 拷贝构造

3.元素的增删

  1. front(); // 返回第一个元素,(不检查容器是否为空)
  2. back(); // 返回最后元素(不检查容器是否为空)
  3. pop_back();
  4. pop_front();
  5. push_back();
  6. push_front();
  7. assign(); // 擦除链表元素,并复制新元素
  8. empty();

4.迭代器访问list中元素

  1. begin();
  2. end();
  3. rbegin();
  4. rend();
  1. list<int>::reverse rintiter = intlist.rbegin(); // 逆向迭代器的初始化

4.操作list中元素

  1. clear();
  2. erase(position) // 删除迭代器position指向的元素
  3. erase(beg, end) // 删除 beg 到 end-1 的元素
  4. insert(position, elem); // 将elem插入到 position指向位置,并返回新元素位置
  5. insert(position, beg, end);
  6. resize(num); // 改变size,如果元素增加使用默认构造函数
  7. resize(num, elem);
  8. size();
  9. max_size();

5.list算法

  1. merge() // 合并两个有序链表,并使之有序
  2. sort() // 默认升序,可以自定义回调函数
  3. reverse()
  4. remove()
  5. remove_if() // 参数为谓词,删除满足谓词的元素
  6. splice() // 删除相邻重复元素
  7. swap() // 交换两个链表

对于void remove_if( _Predicate ) 参数为谓词,谓词可以用函数指针或函数对象表达。

  1. template<class T> class is_odd:public unary_function<T, bool> {
  2. public:
  3. bool operator() (T &val)
  4. {
  5. );
  6. }
  7. };
  8.  
  9. int main()
  10. {
  11. list<int> intlist;
  12. ; i > ; i--) {
  13. intlist.push_back(i);
  14. }
  15. intlist.remove();
  16. for (list<int>::iterator iter = intlist.begin(); iter != intlist.end(); iter++) {
  17. cout << *iter << " ";
  18. }
  19. cout << "\n";
  20. intlist.remove_if(is_odd<int>());
  21. for (list<int>::iterator iter = intlist.begin(); iter != intlist.end(); iter++) {
  22. cout << *iter << " ";
  23. }
  24. cout << "\n";
  25.  
  26. ;
  27. }

STL——list的更多相关文章

  1. 详细解说 STL 排序(Sort)

    0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...

  2. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  3. STL的std::find和std::find_if

    std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...

  4. STL: unordered_map 自定义键值使用

    使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...

  5. C++ STL简述

    前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...

  6. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  7. STL bind1st bind2nd详解

    STL bind1st bind2nd详解   先不要被吓到,其实这两个配接器很简单.首先,他们都在头文件<functional>中定义.其次,bind就是绑定的意思,而1st就代表fir ...

  8. STL sort 函数实现详解

    作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...

  9. STL的使用

    Vector:不定长数组 Vector是C++里的不定长数组,相比传统数组vector主要更灵活,便于节省空间,邻接表的实现等.而且它在STL中时间效率也很高效:几乎与数组不相上下. #include ...

  10. [C/C++] C/C++延伸学习系列之STL及Boost库概述

    想要彻底搞懂C++是很难的,或许是不太现实的.但是不积硅步,无以至千里,所以抽时间来坚持学习一点,总结一点,多多锻炼几次,相信总有一天我们会变得"了解"C++. 1. C++标准库 ...

随机推荐

  1. java:网络通讯

    网络标准模型:开放式系统模型OSI https://www.cnblogs.com/lydit/articles/4499928.html 理解Scoket通讯:https://www.cnblogs ...

  2. SQL Server ->> CLR编程问题汇总

    1) CLR不支持C#类方法重载(Method Overload) 今天打算写个枚举目录的C# CLR存储过程,结果发现原来CLR不支持方法重载. Msg 6572, Level 16, State ...

  3. installed_oracle_can't_use

    Preface 1.my server is windowsxp 2.database is the oralce 10g step A.CHECK SERVER 1.win + r cmd sqlp ...

  4. python接口测试-项目实践(七)脚本优化

    七 脚本优化:重复代码的提取成函数:与项目接口相关的都封装到一个类中:添加手工验证脚本,增加输入值的判断逻辑 将所有与该项目接口相关的封装成类 class ProjectApi: #3个数据源接口 d ...

  5. vue.js--基础 数据的双向绑定

    所谓双向绑定:就是改变modle,就会改变view,改变view,也会改变modle 下面案例,点击getMthod(),获取msg的内容,在点击setMthod()改变msg的内容,你会发现H1的值 ...

  6. Coreseek:常见问题2

    1.failed to lock XXXXX.spl文件 这是你建索引的时候会出现的问题,是你没有把打开的的searchd服务给关闭.由于你打开searchd服务时.他会建立一个叫xxx.spl的暂时 ...

  7. LA 4015 树形背包

    题目链接:https://vjudge.net/contest/164840#problem/D 题意: 给一棵树,每条边上有一些权值,求 长度不超过 x ,最多能走多少个点: 分析: 考虑每一个节点 ...

  8. Array GCD CodeForces - 624D (dp,gcd)

    大意: 给定序列, 给定常数a,b, 两种操作, (1)任选一个长为$t$的子区间删除(不能全部删除), 花费t*a. (2)任选$t$个元素+1/-1, 花费t*b. 求使整个序列gcd>1的 ...

  9. 【转】Uint8Array 转为 string,解决中文乱码

    来源: <http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197> / ...

  10. ISIS Scanner Errors codes

    This section lists errors sorted by number: Error # Defined Constant String Defined In PIXDFLT 0 PIX ...