1.关键概述

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

2.构造list对象

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

3.元素的增删

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

4.迭代器访问list中元素

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

4.操作list中元素

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

5.list算法

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

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

  template<class T> class is_odd:public unary_function<T, bool> {
          public:
                  bool operator() (T &val)
                  {
                          );
                  }
  };

  int main()
  {
          list<int> intlist;
          ; i > ; i--) {
                  intlist.push_back(i);
          }
          intlist.remove();
          for (list<int>::iterator iter = intlist.begin(); iter != intlist.end(); iter++) {
                  cout << *iter << "  ";
          }
          cout << "\n";
          intlist.remove_if(is_odd<int>());
          for (list<int>::iterator iter = intlist.begin(); iter != intlist.end(); iter++) {
                  cout << *iter << "  ";
          }
          cout << "\n";

          ;
  }

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. 1.windows下GIT 服务安装

    本章介绍简单在windows 安装git 服务方法.服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配置,简单易用. ...

  2. Smokeping配置调整

    smokeping两种邮件报警方式 一 .自带sendmail报警 修改这两句话to = 收件邮箱,多个逗号分隔from = smokealert@本机IP /usr/local/smokeping/ ...

  3. 3.Zabbix 3.0 部署

    请查看我的有道云笔记: http://note.youdao.com/noteshare?id=0139b8d2833129740be82e36a94e4fca&sub=5931260FCC8 ...

  4. 一个自动生成awr报告的shell脚本

    最近在学习shell编程,搞一点点小工具自动完成awr报告的收集工作,方便系统出现问题时问题排查.脚本内容如下,系统收集每天开始时间6点结束时间20点的awr报告并存储在/u01/shell_t/aw ...

  5. 如何读写json文件

    代码如下: import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io. ...

  6. 如何让一个简单的maven项目支持one-jar 做成一个jar fatjar

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  7. Spring+Velocity+Mybatis入门

    转自:https://blog.csdn.net/duqi_2009/article/details/47752169 一.开发工具 开发过程中使用的操作系统是OS X,关于软件安装的问题请大家移步高 ...

  8. dijkstra 最小费用最大流

    前言:众所周知:spfa他死了 滑稽 dijkstra同样为最短路算法,为什么不能跑费用流qwq 好像是因为有负权边的缘故 但是如果我们如果使用某种玄学的将边权都拉回到正数的话 就可以跑了dijkst ...

  9. Android学习笔记_JNI_c调用java代码

    1.编写native方法(java2c)和非native方法(c2java): package com.example.provider; public class CallbackJava { // ...

  10. SpeedTree制作超真实老宅