[iuud8]STL之list

list是STL中顺序容器的一种,支持快速的插入删除。也可以简单的把它当作一个双向链表。

为了使用list,必须在头文件中包含下行代码

#include <list>

list是属于std命名空间的,因此使用的时候需要std::list<class T>

初始化

所有容器类型都定义了默认构造函数,用于创建指定类型的空容器对象。默认构造函数不带参数。但除了默认构造函数以外,容器类型还提供其他的构造函数,使用者可以指定元素初值


迭代器

迭代器是一种检查容器内元素并遍历元素的数据类型,list可以通过迭代器来实现元素的访问。


迭代器范围这个概念是标准库的基础。

C++使用一对迭代器来标示迭代器范围(iterator range),这两个迭代器分别指向同一容器的两个元素或超出末端的下一位置。如果分别使用first和last来命名的话,它们标示了从first开始并且包括first,到last为止并且不包括last的一段元素。如果两个迭代器相等,则迭代器范围为空。注意,这里first,last区分顺序,last可以等于first,或者指向first标记的元素后面的某个元素,但绝对不能指向first标记的元素前面的元素!!!

容器操作

1)begin和end操作


表中每个操作都有两种不同的版本:const与非const。这些操作返回什么类型取决于容器是否为const。如果容器不是const,则分别返回iterator或者reverse_iterator类型。如果容器是const,则其返回类型需要加上const_前缀,也就是const_iterator或者const_reverst_iterator类型。

2)数据访问


注:list不允许通过下标来访问元素!!!

3)添加元素


4)删除元素


5)关系运算符

list支持使用关系操作符来实现两个容器的比较,要求元素类型必须相同。例如list<int>只能和list<int>比较,而不能和list<string>比较。
容器的比较是基于容器内元素的比较。即容器内元素支持的关系操作符,该容器才能支持。
容器的关系运算类似于string类型的关系运算:
1如果两个容器具有相同的长度并且所有元素都相等,那么这两个容器就相等,否则不等
2.如果两个容器的长度不相同,但较短的容器中所有元素都等于较长容器中对应的元素,则称较短的容器小于另一个容器
3.如果两个容器都不是对文的初始子序列,则它们的比较结果取决于所比较的第一个不相等的元素

6)容器大小


容器的capacity(容量)与size(长度)的区别非常大。size指容器当前拥有的元素个数;而capacity则指容器在必须重新分配存储空间之前可以存储的元素总数。

7)赋值操作


assign操作首先删除容器内所有的元素,然后将其参数所指定的新元素插入到该容器中。如果两个list存储的元素类型相同,则等同于使用赋值运算符操作。但如果在不同类型容器内,元素类型不相同但是相互兼容,例如string,char *,则其赋值运算必须使用assign函数。


***********************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值