STL总结

本文介绍了STL(标准模板库)中的六大核心组件:容器、迭代器、算法、仿函数、迭代器适配器和空间配置器。详细讨论了各种容器的特性,包括序列式容器与关联式容器的区别,以及迭代器的基本操作和分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点总结

STL中六大组件:
1)容器(Container),是一种数据结构,如listvector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器;
2)迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭代器指定listvector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象;
3)算法(Algorithm),是用来操作容器中的数据的模板函数。例如,STLsort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象,函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用;
4)仿函数(Functionobject
5)迭代适配器(Adaptor
6)空间配制器(allocator   有一些是从网络上查的。

容器

容器类别

1,序列式容器:排列次序取决于插入时机和位置

例如:vector list queue,,,,

2,关联式容器:排列顺序取决于特定准则

例如:map set ,,,,

容器的共同能力

1,所有容器中存放的都是值而非引用。如果希望存放的不是副本,容器元素只能是指针。

2,所有元素都形成一个次序,可以按相同的次序一次或多次遍历每个元素。

容器元素的所有条件

1,必须能够通过拷贝构造函数进行复制,

2,必须可以通过赋值运算符完成赋值操作,

3,必须可以通过析构函数完成销毁动作,

4,序列式容器元素的默认构造函数必须可用

5,某些动作必须定义operator ==,例如搜寻操作

6,关联式容器必须定义出排序准则,默认情况是重载operator<

容器的共同操作

1,初始化,建立产生一个空容器

2,进行数据初始化

//或者,以另一个容器元素为初值完成初始化

//或者,以数组元素为初值完成初始化

迭代器

可遍历STL容器内全部或部分元素的对象,指出容器中的一个特定位置。

基本操作

l  *  :返回当前位置上的元素值,如果该元素有成员,可以通过迭代器operator->取用

l  ++  :将迭代器前进至下一个元素

l  ==  和 != :判断两个迭代器是否指向同一个位置

l  ==  :为迭代器赋值

l  begin() :返回一个迭代器,指向第一个元素

l  end():返回一个迭代器,指向最后一个元素之后

注:[beginend)是半开区间的好处:

为遍历元素时循环的结构时机提供了简单的判断依据(只要未到end(),循环就可以继续)

不必对空区间采取特殊处理(空区间的begin(),就等于end()

迭代器的分类

1,双向迭代器:可以双向进行,以递增运算前进或以递减运算后退、可以用==和!=比较

   listsetmap提供双向迭代器

2,随机存取迭代器

除了具备双向迭代器的所有属性,还具备随机访问能力

可以对迭代器增加或减少一个偏移量处理迭代器之间的距离,或者使用<>之类的关系运算符比较两个迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值