List --- 双向列表

  List是线性列表结构,数据查找需要一个接一个,不能直接得到元素地址,检索时间与目标元素的位置成正比。但是插入数据比较快,可以在任何位置插入数据或者删除数据。list特点是:

  (1) 不使用连续的内存空间这样可以随意地进行动态操作;

  (2)可以在内部任何位置快速地插入或删除,当然也可以在两端进行push和pop  。

  (3) 不能进行内部的随机访问,即不支持[ ]  操作符和vector.at()  ;

大多数函数和vector的类似,这里就不解释了,有几个不一样的如下:

  merge()  合并两个list  --- 链接之后会把第二个链表删除掉

    void merge( list &lst );//把自己和lst链表连接在一起
    void merge( list &lst, Comp compfunction ); //指定compfunction,则将指定函数作为比较的依据。

  1. list <int> listTest;
  2. list <int>::iterator it;
  3. list <int> listTest2;
  4. // listTest.assign(4,66);//初始化,给4个元素赋值为66
  5. for (int i=;i<;i++)
  6. {
  7. listTest.push_back(i);//
  8. listTest2.push_back(+i);//
  9. }
  10.  
  11. listTest.merge(listTest2);
  12. cout<<listTest.back()<<endl;//获取最后一个元素
  13. //cout<<listTest2.back()<<endl;
  14. if (listTest2.empty())
  15. {
  16. cout<<"listTest2 is ampty"<<endl;
  17. }

  void remove( const TYPE &val ); //删除链表中所有值为val的元素

    void remove( const TYPE &val ); //删除链表中所有值为val的元素

  1. listTest.remove();//移除最后一个元素
  2. cout<<listTest.back()<<endl;//获取最后一个元素

  unique()  删除list中重复的元素

    void unique();//删除链表中所有重复的元素
    void unique( BinPred pr );// 指定pr,则使用pr来判定是否删除。

  1. it = listTest.end();
  2. cout<<listTest.size()<<endl;
  3. cout<<listTest.back()<<endl;//获取最后一个元素
  4. listTest.insert(it,);//插入到it以前
  5. listTest.insert(it,);//插入到it以前
  6. listTest.unique();//删除所有重复元素
  7. cout<<"*******************"<<endl;
  8. cout<<listTest.size()<<endl;
  9. cout<<listTest.back()<<endl;//获取最后一个元素

  splice()  合并两个list   

    void splice( iterator pos, list &lst );//把lst连接到pos的位置
    void splice( iterator pos, list &lst, iterator del );//插入lst中del所指元素到现链表的pos上
    void splice( iterator pos, list &lst, iterator start, iterator end );//用start和end指定范围。

  1. it = listTest.end();
  2. listTest.splice(it,listTest2);//将链表2链接到1后面
  3. cout<<listTest.back();

  完整代码如下:

  1. #include "list"
  2. #include "iostream"
  3. using namespace std;
  4. int main()
  5. {
  6. list <int> listTest;
  7. list <int>::iterator it;
  8. list <int> listTest2;
  9. // listTest.assign(4,66);//初始化,给4个元素赋值为66
  10. for (int i=;i<;i++)
  11. {
  12. listTest.push_back(i);
  13. listTest2.push_back(+i);
  14. }
  15.  
  16. // listTest.merge(listTest2);
  17. // cout<<listTest.back()<<endl;//获取最后一个元素
  18. // //cout<<listTest2.back()<<endl;
  19. // if (listTest2.empty())
  20. // {
  21. // cout<<"listTest2 is ampty"<<endl;
  22. // }
  23. // listTest.remove(19);//移除最后一个元素
  24. // cout<<listTest.back()<<endl;//获取最后一个元素
  25. //
  26. it = listTest.end();
  27. cout<<listTest.size()<<endl;
  28. cout<<listTest.back()<<endl;//获取最后一个元素
  29. listTest.insert(it,);
  30. listTest.insert(it,);
  31. listTest.unique();//删除所有重复元素
  32. cout<<"*******************"<<endl;
  33. cout<<listTest.size()<<endl;
  34. cout<<listTest.back()<<endl;//获取最后一个元素
  35. cout<<listTest.front()<<endl;//获取最后一个元素
  36. if (listTest.empty())
  37. {
  38. cout<<"listTest is empty"<<endl;
  39. }
  40.  
  41. // it = listTest.end();
  42. // listTest.splice(it,listTest2);//将链表2链接到1后面
  43. // cout<<listTest.back();
  44. getchar();
  45. getchar();
  46. return ;
  47. }

Code

STL学习笔记2--list的更多相关文章

  1. Effective STL 学习笔记 39 ~ 41

    Effective STL 学习笔记 39 ~ 41 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  2. Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value

    Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...

  3. Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据

    Effective STL 学习笔记 Item 34: 了解哪些算法希望输入有序数据 */--> div.org-src-container { font-size: 85%; font-fam ...

  4. Effective STL 学习笔记 32 ~ 33

    Effective STL 学习笔记 32 ~ 33 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  5. Effective STL 学习笔记 31:排序算法

    Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

  6. Effective STL 学习笔记 Item 30: 保证目标区间足够大

    Effective STL 学习笔记 Item 30: 保证目标区间足够大 */--> div.org-src-container { font-size: 85%; font-family: ...

  7. Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor

    Effective STL 学习笔记 Item 26: Prefer Iterator to reverse_iterator and const_rever_itertor */--> div ...

  8. Effective STL 学习笔记: Item 22 ~ 24

    Effective STL 学习笔记: Item 22 ~ 24 */--> div.org-src-container { font-size: 85%; font-family: monos ...

  9. Effective STL 学习笔记 Item 21:Comparison Function 相关

    Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...

  10. Effective STL 学习笔记:19 ~ 20

    Effective STL 学习笔记:19 ~ 20 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...

随机推荐

  1. 中介者模式和php实现

    中介者模式: 中介者模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模 ...

  2. Java实现将GBK编码格式的文件夹中所有文件都转化为UTF-8格式的文件,编码格式转化

    package CodeConvert; import Java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fi ...

  3. vue-cli3项目优化首页加载过慢的一些心得

    博主最近发现vue-cli3项目做完后,点击首页加载时间好久啊,一般都要3-5s.这样的加载时间博主自己都受不了,所以就有了这个随笔,将自己的一些研究心得分享给大家. 首先推荐大家下载一个webpac ...

  4. (六)VMware Harbor简单使用

    VMware Harbor简单使用 1. 登陆: [用户:admin  , 密码:Harbor12345]配置文件里设置的 登陆后的界面: 2. 用户管理: 2.1 新近用户 3. 仓库管理: 3.1 ...

  5. 在DataGridView控件中显示图片

    实现效果: 知识运用: DataGridView控件的DataSource属性 实现代码: private void Form1_Load(object sender, EventArgs e) { ...

  6. 2018.4.13 用java配置/生成Xml文件 结合IO流知识点

    自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7; impor ...

  7. volatile引发的一系列血案

    最早读<深入理解java虚拟机>对于volatile部分就没有读明白,最近重新拿来研究并记录一些理解 理解volatile前需要把以下这些概念或内容理解: 1.JMM内存模型 2.并发编程 ...

  8. Mysql command line

    show databasename; use databasename; show tables; desc tablename;

  9. PostgreSQL学习(2)-- mvcc

    1.PG事务隔离级别 在数据库中,并发的操作进行读写数据时,则会遇到脏读.不可重复读.幻读.串行化异常等问题. 数据库事务的特性: 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对 ...

  10. CPL学习笔记(二)

    数组 数组(array) 声明通用格式为: typeName arrayName[arraySize]. arrayName指定元素数目,必须为整型常量或const值.(不能是变量) int a[3] ...