【C++】STL系列(10,完结篇):适配器

–本文章来自于侯捷老师的STL课程和自己的理解

若有错误,欢迎指正

适配器是STL体系结构里面也是相当重要的一部分。
容器,迭代器和仿函数都有他们自己的适配器:
在这里插入图片描述
说到底适配器到底是一个什么东西,发挥什么作用这是需要先弄清楚的问题。

我个人觉得适配器这个概念应该还是起源于适配器的设计模式。就是让原本的接口经过改造形成新的,适应新环境的接口。

比如容器适配器,stack和queue。
我们之前说过这两个容器的底层是由deque支撑的。但是从另一个角度来说,这两个容器也就是对deque进行改造而实现的。这是容器适配器最典型的代表:
在这里插入图片描述

然后比如迭代器适配器:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这四种迭代器适配器分别改变了迭代器的不同功能

第一种Reverse Iterators,就是之前在介绍算法时提到过的反向迭代器。这其实就是一种迭代器适配器。让原本正向迭代器的功能反向实现。得到与正向迭代器相反的结果

第二种Insert Iterators,Insert Iterators就是可以将一般迭代器的赋值操作转变为插入操作。这样的迭代器包括专司尾端插入操作的 back_insert_iterator,专司头端插入操作的 front_insert_iterator,以及可从任意位置执行插入操作的 insert_iterator。

由于这三个 iterator adapters 的使用接口不是很直观,STL 提供了三个相应函数:back_inserter()、front_inserter()、inserter()。

第三种和第四种就是输入输出流的迭代器,可以将迭代对象直接绑定到输入输出流的对象上面,非常方便。

最后就是仿函数适配器。仿函数的适配器是所有适配器里面最庞大的一个族群,仿函数的适配器做的事情其实就是绑定,组合,修饰不同的仿函数,让他们形成各种各样的语义。
在这里插入图片描述

在这里插入图片描述
这里,之前仿函数继承的那三个Typedef就会提供相应的信息。

其中,在C++11中,所有与绑定有关的仿函数适配器都变成了bind:
在这里插入图片描述
bind可以绑定的对象如上图的左下角所示。

其中_1,_2,_3,代表该位置绑定第几参数

同时,bind还可以用它唯一的模板参数指定返回值类型。

STL大致的体系结构就到此为止了。做的笔记基本上都是一些理论知识,真正要使用,还需要非常大量的实践来支撑。以后不定时将一些个人感觉十分不错的使用案例分享出来。

此外,STL剩余的一些边角料部分,比如Tuple,moveable()操作等等,请自行跟着侯捷老师学习,这一部分老师讲的十分透彻.我个人现在觉得这一部分和STL的整体关系不是很紧密,就先不加入到这份笔记里面来了。

最后,谢谢大家观看,不足的地方或者是错误的地方,又或者是没看懂的地方,欢迎在评论区提出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值