美文网首页
10泛型算法

10泛型算法

作者: 龟龟51 | 来源:发表于2017-10-26 10:54 被阅读0次

    10泛型算法

    10.1概述

    泛型算法不能改变容器的大小,依赖于元素类型的操作。

    10.2初识泛型算法

    10.2.1只读算法

    find

    10.2.2写容器元素的算法

    fill

    back_inserter

    10.2.3重排容器元素的算法

    sort, unique

    10.3定制操作

    10.3.1想算法传递函数

    谓词:是一个可调用的表达式,其返回结果是一个能用作条件的值(即返回作为条件去判断)。

    一元谓词接受单一参数,二元谓词两个。接受谓词参数的算法元素类型必须能转换成谓词的参数类型。

    10.3.2lambda

    可调用类型有:函数,函数指针,lambda表达式,重载了函数调用运算符的类。

    lambda传递参数

    Lambda不能有默认参数,调用的实参数目永远与形参数目相等。

    使用捕获列表

    10.3.3lambda捕获和返回

    值捕获

    值捕获的前提是变量可以拷贝,与参数不同,被捕获的变量的值是在lambda创建时拷贝,而不是调用时拷贝。

    引用捕获

    必须保证被引用的对象在lambda执行的时候是存在的。

    隐式捕获

    编译器可以推断捕获列表,但要在列表中加&或=,&表引用,=表值。

    可以混合使用隐式捕获和显式捕获。但第一个元素必须是隐式的。

    可变lambda

    希望改变一个捕获的值,加关键字mutable

    指定lambda的返回类型

    必须尾置返回类型

    10.3.4参数绑定bind

    头文件functional, 命名空间在std::placeholders

    例:f(a, b, c, d, e);

    Auto g=bind(f, a, b, _2, d, _1);

    g(X, Y);等价于f(a, b, Y, d, X);

    10.4再探迭代器

    10.4.1插入迭代器

    10.4.2iostream迭代器

    Iostream_iterator操作

    Ostream_iterator操作

    10.4.3反向迭代器

    rbegin,rend, crbegin, crend

    除了forward_list外其他容器都支持。

    反向迭代器与正常的顺序是相反的,也有++,--但与正常相反

    用base()获得正常的迭代器。

    10.5泛型算法结构

    10.5.1  5类迭代器

    10.5.2算法形参模式

    Dest表示算法可以写入目的位置的迭代器

    10.5.3算法命名规范

    10.6特定容器算法

    相关文章

      网友评论

          本文标题:10泛型算法

          本文链接:https://www.haomeiwen.com/subject/krbhpxtx.html