c++ Primer 第十章 泛型算法 重点梗概

概述

  1. 算法依赖于迭代器,而迭代器不依赖于容器,所以算法不依赖于容器
  2. 但是算法往往涉及比较,但是容器中的元素不一定定义了比较运算符,所以

大多数的算法提供了一种方法,允许我们使用自定义的操作来代替默认的运算符

初识泛型算法

1. 只读算法

  • accumulate(iterator beg, iterator end, T value)
  • equal (iterator beg, iterator end, iterator beg2)

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

2. 写容器的算法

  • fill(iterator beg, iterator end, T value)
  • copy(iterator beg, iterator end, Container container)
  • replace(iterator beg, iterator end, T oldCValue, T newValue)
  • replace_copy(iterator beg, iterator end, iterator position, T value)

3. 重排算法

  • sort(iterator beg, iterator end)
  • unique(iterator beg, iterator end)
    注意: unique 必须在使用sort之后再使用,因为unique的算法是检测相邻的元素是否相等。

定制操作

向算法传递函数

这里要注意的是谓词 的种类,一元谓词只能接收一个参数,二元谓词只能接收两个参数。一元谓词还是二元谓词是由算法本身决定的。

lambda表达式

解决谓词参数数量限制的一种方法
形式

[捕获列表](参数列表) -> return type {函数体}

这部分虽然不常用但是全部都是重点

参数绑定

auto newCallable = bind(callable, arg_list)

这里placeholder的概念很重要,_1, _2… 作为占位符,接收参数,同时还可以巧用于重排参数顺序。

再探迭代器

反向迭代器是重点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值