题外:len = sizeof(a)/sizeof(a[0]); 求出数组长度

1、list是一种以双向链表方式实现的一种顺序容器。list容器中,存放元素的存储单元可以是连续的也可以是不连续的。

2、list容器的特点是:<1>可以对list中的每一个元素进行插入、删除、查找操作;与deque和vector容器相比,list进行这些操作的效率更高;

<2>由于list中的元素是通过指针链接在一起构成的链表,因此不能通过下标的方式存取元素

<3>在list中访问元素的效率比在vector容器中的效率低

<4>元素之间的指针占用率额外的内存空间

3、需要包含的命令

# include<list>

using namespace std;

构造类函数

1、创造一个list容器

<1>第一个函数的作用是创建一个空的list容器,该容器为空-------------------------list<int> L1

<2>第二个函数的作用是将n个值为value 的元素存放到当前的list容器中------------list<int> L2(4,100) 4个值为100

<3>将输入对象中迭代器[first,last)中的元素存放到容器中--------------------------list<int> L3(L2.begin()+1,l2.end())------错误:list<int> L3(L2.begin()+1,l2.end())

构造list对象时,不能对迭代器进行加减运算

<4>用另一个双向链表x初始化list容器-----------------------------------------------list<int> L4(L3)

2、析构函数~list()在程序结束时由系统自动调用

3、operator=函数------复制list中的内容

用例:L2 = L1;

迭代器函数------begin、end、rbegin、rend

1、与vector容器一样,list容器也可以将数组地址(指针) 作为参数

char a[]="Hello World!";

int len = strlen(a);

list<char> L(a,a+len);

2、在使用迭代器存取list中的元素时,循环的结束条件不可以写做如下形式:

for(it=L.begin();it<L.end();it++)

而应该写做一下形式;

for(it=L.begin();it != L.end();it++)

这是因为list是一个链表,地址不一定是连续的,因此不能用大于或小于来判断循环是否结束

3、反向迭代器的定义方式

list<int>::reverse_iterator rit;

容量类函数-size、max_size、empty、resize------L.resize(元素个数,元素值)

详情见deque类

存取类函数--front、back-------因为list容器实质上是一种双向链表,所以不存在operator[]和at

操作类函数-assign、push_back、push_front、pop_back、pop_front、insert、erase、swap、clear 类似于 deque中的用法

1、splice函数----将一个list容器中的元素移动到另一个list容器

x是一个list容器,也可以是当前容器

<1>第一个函数的作用是将x中的元素移动到list容器的第position个位置上,并将x中的元素删除---L1:1 2 3 4 5;L2:10 20 30;it指向L1的2 ---L1.splice(it,L2)

-L1:1 10 20 30 3 4 5

<2>第二个函数的作用是将x中迭代器i指向的元素的元素移动到当前list容器的第position个位置---L2.splicce(L2.begin(),L1,it)----将L1中it指向的元素移动到L2的第一个位置,                                                                                                                                                                       并删除 L1中的it指向的元素

<3>第三个函数的作用是将x中[first,last)之间的元素移动到当前list容器的第position个位置-----L2.splice(it2,L1,L1.begin(),L1.end())---将L1中[first,last)的元素移动到L2

中it2指向的位置,并删除L1中的元素

2、remove函数-------作用是将当前list容器中值为value的元素移除

用例:L.remove(65)--------移除值为65的元素

3、unique函数----作用是删除list容器中重复的元素,其实它并不真正把重复的元素删除,是把重复的元素移到后面去了,然后依然保存到了原数组中,然后 返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。

<1>第一个函数的作用是从控制序列中删除那些 与前一个元素相等 的元素----L.unique();

<2>第二个函数的作用是从删除满足某种条件的所有元素-------比如L1.unique(mypred);删除与第一个元素不等的元素

4、merge函数-----作用是将两个list容器中的元素合并

<1>第一个函数是将链表x合并到当前的list容器中----L1.merge(L2);

<2>利用模板类判断两个元素的大小并返回结果,使list容器中的元素降序排列-----L1.merge(L2,greater<数据类型>());

5、sort函数--------作用是对list容器中的元素进行排序

<1>升序排序-------L.sort()

<2>降序排列-------L.sort(greater<数据类型>());

5、reverse函数------将list中的元素逆置(以相反的顺序存放)

用例:L.reverse()

# include<iostream>
# include<list>
# include<string>
using namespace std;
int main()
{
string s;
getline(cin,s);   ////////输入带空格的字符串
list<char> L;
list<char>::iterator it;       //////用迭代器存取元素
for(int i=0; i<s.length() ; i++)
{
L.push_back(s[i]);    //////////将字符串一一存入
}
L.reverse();
for(it = L.begin() ; it != L.end() ; it++)
{
cout<<*it;///输出list里的内容
}
return 0;
}

list 类的更多相关文章

  1. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  2. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  3. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类

    .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...

  7. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  8. PHP-解析验证码类--学习笔记

    1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1  定义变量 //随机因子 private $char ...

  9. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  10. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

随机推荐

  1. SQLServer 2012 报表服务部署配置(1)

    由于最近客户项目中,一直在做SQL Server 方面配置.就给大家概况简述一下 报表服务安装及遇到问题.安装和运行 SQL Server 2012 的微软原厂都有最低硬件和软件要求,对于我们大多数新 ...

  2. Kail安装后的配置

    安装完Kail系统后进行简单的几项配置可以让使用更方便 VMware安装Kail系统这里就不介绍了,大家可以参考这个博客:http://www.cnblogs.com/xuanhun/p/568831 ...

  3. C基础的练习集及测试答案(16-30)

    16.(课堂)输入一个年份(正整数),判断这年是否是闰年.闰年判断标准:年份能被4整除:如若遇到100的倍数,则需判断年份能否被400整除.(逢4一闰,逢百不闰,逢400又闰) #if 0 .(课堂) ...

  4. java面试题(杨晓峰)---第五讲String、StringBuffer、StringBuilder有什么区别?

    线程 字符 操作频繁度 1 String (1)String的创建机制 由于String在java世界中使用过于频繁,java为了避免在一个系统中产生大量重复的String对象,引入了字符串常量池,其 ...

  5. RYU的GUI安装

    1. RYU安装 Ubuntu14.04 LTS 1.sudo apt-get install git python-pip libxml2-dev libxslt1-dev python2.7-de ...

  6. JAVA小游戏之两个物体碰撞产生的碰撞检测

    首先必须了解两个物体,在移动时,会有怎样的效果,比如沪我们小时候耍过的坦克大战.看起来很简单,但是写起代码来,复杂的要多: 下面举个例子: // 构造一个新的 Rectangle,其左上角的坐标为 ( ...

  7. 11gR2 新特性: Rebootless Restart

    众所周知,当集群出现问题时,例如某个节点丢失网络心跳,或者不能够访问表决盘,或者节点出现了严重的性能问题等,CRS会选择将某个节点的OS 重启,以便保证集群的一致性.当然,大部分的重启都是由CRS的核 ...

  8. 2018.4.6 java交易记录系统

    题目 ###1.交易明细文件内容如下例: 客户号 姓名 所述机构号 性别 帐号 发生时间 发生额 000001|刘德华|0000|1|4155990188888888|20060720200005|3 ...

  9. 7.Props向子组件传递数据

    组件实例的作用域是孤立的.这意味着不能并且不应该在子组件的模板内直接引用父组件的数据. 可以使用 props 把数据传给子组件. for-child-msg="aaa"  , fo ...

  10. echarts实现仪表盘(自己动起来,没有后端,顺便重温math.random

    let a = parseInt(Math.random() * (2 + 1), 10); let arr = []; arr.push(res[a]); let option = { toolti ...