JavaSE 跨域 阿里巴巴 html excel sed collections casting signalr LimeJS vue组件注册 sql数据库教学视频 ppt视频教程下载 css获取最后一个元素 idea生成main方法 java反射方法 docker的安全特性有哪些 pcm接口 oracle重命名表名 linux全局搜索文件 python相对路径怎么写 jquery获取兄弟节点 python注释 python如何实现多线程 python条件判断 python创建文件 java开发 java的泛型 java目录 linux命令 linuxls命令 java项目下载 灼热峡谷 exescope教程 路由器有辐射吗 图片链接生成器 微信小程序提示框 网络文件服务器 2k14生涯模式修改器 getelementbyid
当前位置: 首页 > 学习教程  > 编程语言

C++中泛型算法详解6:根据结构速记所有标准库的泛型算法

2021/2/13 18:10:14 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

本节与迭代器的类型密切相关。 0. 约定 beg和end表示元素范围的迭代器,几乎所有的算法都有一对由beg和end表示的序列进行操作。beg2表示第二个输入序列开始位置的迭代器。end2表示第二个序列的末尾位置。如果没有end2,算法假定beg2表示的序列与第一个序…

本节与迭代器的类型密切相关。

0. 约定

  • beg和end表示元素范围的迭代器,几乎所有的算法都有一对由beg和end表示的序列进行操作。
  • beg2表示第二个输入序列开始位置的迭代器。end2表示第二个序列的末尾位置。如果没有end2,算法假定beg2表示的序列与第一个序列表示的一样大。
  • 两个序列类型不必匹配,但是必须保证两个序列的元素都可以执行特定操作或者调用给定的可调用对象。
  • unaryPred 和binaryPred表示一元和二元谓词,分别接受一个或者两个参数
  • unaryOp和binaryOp是可调用对象,分别使用来自输入序列的一个和两个实参来调用

1. 查找对象的算法

简单查找算法

  • 要求是输入迭代器。
    在这里插入图片描述

查找重复值的算法

  • 要求前向迭代器
    在这里插入图片描述
    返回end.

查找子序列的算法

  • find_first_of: 一个输入迭代器,一个前向迭代器
  • 之外,都是两个前向迭代器
    在这里插入图片描述

2. 其他只读算法

  • 两个输入迭代器
    在这里插入图片描述

3. 二分搜索算法

  • 随机访问迭代器的话,这类算法的性能好很多。
  • 算法要求元素有序
    在这里插入图片描述

附录:

关于二分搜索的算法实现细节:link

4. 写容器元素的算法

只写不读元素的算法

  • 输出迭代器
  • _n版本接受第二个实参,表示写入元素的目录
    在这里插入图片描述

使用输入迭代器的写算法

  • 输入范围是输入迭代器
  • 输出范围要求名为dest的输出迭代器
    在这里插入图片描述

此外还有使用前向迭代器和双向迭代器的写算法,不再赘述。有需求就去查看《C++ Primer》

5. 划分与排序算法

所有的排序和划分算法都提供了稳定和不稳定版本。

稳定算法保证相等元素的相对顺序。

划分算法

划分算法将输入范围中的元素划分为两组,一组包含满足谓词的元素,第二足包含不满足谓词的元素。

均要求双向迭代器
在这里插入图片描述排序算法

算法要求随机访问迭代器。
在这里插入图片描述

6. 通用重排操作

算法基本版本都是原址操作
提供_copy拷贝版本

使用前向迭代器的重排算法

在这里插入图片描述

使用双向迭代器的重排算法

在这里插入图片描述
使用随机访问迭代器的重排算法

在这里插入图片描述

7. 排列算法

什么是下一个或前一个排列?

在这里插入图片描述

  • 算法假定序列中的元素是唯一的。
  • 双向迭代器
    在这里插入图片描述

8. 有序序列的集合算法

在这里插入图片描述
在这里插入图片描述

9. 最大最小值

在这里插入图片描述在这里插入图片描述

10. 数值算法

  • 头文件numeric

在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_700199.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?