首页 > 编程语言 > 详细

泛型算法(1)——初识泛型算法

时间:2019-01-04 16:35:06      阅读:144      评论:0      收藏:0      [点我收藏+]

《C++ primer》第五版读书笔记  

标准库容器定义的操作集合惊人的小。标准库并未给每个容器添加大量功能,而是提供了一组算法,这些算法的大多数都独立于任何特定的容器。这些算法是通用的(泛型的):它们可用于不同类型的容器和不同类型的元素。标准库并未给每个容器都定义成员函数来实现这些操作,而是定义一组泛型算法——实现一些经典算法的公共接口。

大多数算法都定义在头文件algorithm中,标准库还在头文件numeric中定义了一组数值泛型算法。一般情况下,这些算法不直接操作容器,而是遍历由两个迭代器指定的一个元素范围来进行操作。

迭代器令算法不依赖于容器,但算法依赖于元素类型的操作。

关键概念:算法永远不会执行容器的操作,算法永远不会改变底层容器的大小,算法可能改变底层容器中保存的元素的值,但永远不会直接添加或删除元素。

初识泛型算法

1、只读算法:

只读取其范围内的元素,而从不改变元素。

如find,count,accumulate等

l  对于只读取而不改变元素的算法,通常最好使用cbegin()和cend()。

l  那些只接受一个单一迭代器来表示第二个序列的算法,都嘉定第二个序列至少与第一个序列一样长。

2、写容器元素的算法:

将新值赋予序列中的元素。

如fill,fill_n,

l  必须注意确保序列原大小至少不小于我们要求写入的元素数目。

l  算法不检查写操作:向目的位置迭代器写入数据的算法假定目的位置足够大,能容纳要写入的元素。

back_inserter

一种保证算法有足够元素空间来容纳输出数据的方法是使用插入迭代器。插入迭代器是一种向容器中添加元素的迭代器。

back_inserter是定义在头文件iterator中的一个函数。

3、拷贝算法:

另一个项目的位置迭代器指向的输出序列中的元素写入数据的算法。

copy、replace

4、重排容器元素的算法:

sort、unique

算法不能直接添加或删除元素,使用容器操作删除元素,如erase。

泛型算法(1)——初识泛型算法

原文:https://www.cnblogs.com/Summer-8918/p/10220646.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!