关键:算法通过在迭代器上进行操作来实现类型无关。算法不改变所操作序列的大小。

1.算法大多都定义在algorithm头文件中,标准库还在头文件numeric中定义了一组数值泛型算法。

2.泛型算法永远也不会改变底层容器的大小。

3.用一个单一迭代器表示第二个程序的算法都假定第二个序列至少与第一个一样长。

4.插入迭代器:当我们通过一个插入迭代器赋值时,一个与赋值号右侧值相等的元素被添加到容器中。

5.多个算法都提供所谓的拷贝版本。这些算法计算新元素的值,但不会将它们放置在输入序列的末尾,而是创建一个新序列保存这些结果。

6.渭词:是一个可调用的表达式,其返回结果是一个能用作条件的值。

7.lambda表达式:
[捕获列表](参数列表)->return type{function body};
捕获列表是一个lambda所在函数定义的局部变量的列表。
①可以忽略参数列表和返回类型,都是必须包含捕获列表和函数体
②忽略括号和参数列表等价于指定一个空参数列表。
③如果忽略返回类型,假如函数体只有一个return语句,则返回类型从返回的表达式的类型推断而来,否则,其他任何情况,返回类型为void.
④lambda不能有默认参数
⑤捕获列表只用于局部非静态变量,lambda可以直接使用局部static变量和它所在函数之外声明的名字。
⑥隐式捕获:&告诉编译器采用捕获引用方式,=则采用值捕获方式。如果我希望对一部分变量采取值捕获,其他采用引用捕获,可以混合使用隐式捕获和显示捕获。
⑦当我们需要为一个lambda定义返回类型时,必须使用尾置返回类型。

8.标准库函数blind可以将函数适配参数的数量和顺序。blind和ref和cref均在functional头文件中。

9.插入迭代器:
①执行*it,it++,++it之类的操作后不会对迭代器做任何事情,每个操作还是返回it.
②back_inserter:调用push_back.  front_inserter:调用push_front,inserter元素被插入到给定迭代器所表示的的元素之前。
③front_inserter元素总是插入到容器第一个元素之前。因此用copy时,最后目的位置用front——inserter时会使拷贝逆序。

10.iostream迭代器:
如果定义一个iostream迭代器的时候默认初始化迭代器,这样就创建了一个可以作为尾后值使用的迭代器。
例子:
istream_iterator<int>in_iter(cin),eof;
vector<int> vec(in_iter,eof);
这样这个容器vec就是由关联的流中读取数据获得的。

每次向一个out_iter赋值时,写操作就会被提交

11.流迭代器不支持递减运算。

12.对于list和forward_list应该优先使用成员函数版本的算法而不是通用算法。

13.链表特有版本和通用版本间的一个至关重要的区别就是链表版本会改变底层的容器。

Chapter10(泛型算法)--C++Prime笔记的更多相关文章

  1. 【c++ Prime 学习笔记】第10章 泛型算法

    标准库未给容器添加大量功能,而是提供一组独立于容器的泛型算法 算法:它们实现了一些经典算法的公共接口 泛型:它们可用于不同类型的容器和不同类型的元素 利用这些算法可实现容器基本操作很难做到的事,例如查 ...

  2. Chapter10:泛型算法

    泛型算法的基础是迭代器. 迭代器令算法不依赖于容器,但是算法依赖于元素类型的操作.也即:算法永远不会执行容器的操作. 那么,如果想向容器中添加元素或者执行其他的一些操作呢?标准库提供了插入迭代器来完成 ...

  3. C++ Primer 读书笔记:第11章 泛型算法

    第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数 ...

  4. C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构

    STL实践与分析 --泛型算法的结构 引言: 正如全部的容器都建立在一致的设计模式上一样,算法也具有共同的设计基础. 算法最主要的性质是须要使用的迭代器种类.全部算法都指定了它的每一个迭代器形參可使用 ...

  5. C++ Primer笔记6_STL之泛型算法

    1.泛型算法: 大多数算法定义在头文件algorithm中.标准库还在头文件numeric中定义了一组数值泛型算法 仅仅读算法: 举例: find函数用于找出容器中一个特定的值,有三个參数 int v ...

  6. C++ 泛型算法

    <C++ Primer 4th>读书笔记 标准容器(the standard container)定义了很少的操作.标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛 ...

  7. C++的那些事:容器和泛型算法

    一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.q ...

  8. C++ Primer : 第十章 : 泛型算法 之 只读、写和排序算法

    大多数算法都定义在<algorithm>头文件里,而标准库还在头文件<numeric>里定义了一组数值泛型算法,比如accumulate. ●  find算法,算法接受一对迭代 ...

  9. 【STL】帮你复习STL泛型算法 一

    STL泛型算法 #include <iostream> #include <vector> #include <algorithm> #include <it ...

随机推荐

  1. Java中&、|、&&、||详解

    1.Java中&叫做按位与,&&叫做短路与,它们的区别是: & 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧 ...

  2. Python爬虫框架Scrapy学习笔记原创

     字号 scrapy [TOC] 开始 scrapy安装 首先手动安装windows版本的Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#twi ...

  3. mybatis oracle和mysql like模糊查询写法

    oracle:RESOURCE_NAME LIKE '%' || #{resourceName} || '%'mysql:RESOURCE_NAME like concat(concat(" ...

  4. Scrum Meeting 11.10

    成员 今日任务 明日计划 用时 徐越  调试前端代码 协助重构UI,完善前端逻辑  2h  赵庶宏 调出不能显示回答列表的bug,是后端数据库建库问题 与前一组进行数据库统一  3h  薄霖 UI代码 ...

  5. 用C给小学生出题目

    用C给小学生出题目 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 300 • Es ...

  6. 四则运算2及PSP0设计项目计划

    时间比较紧,我简单写写我的设计思路: 题目在四则运算1的基础上控制产生题目的数量,这个可以用变量控制:打印方式也可选用变量控制,程序的关键是括号的生成.我们可以将整个四则运算式看成()+()的模型,然 ...

  7. 第二阶段Sprint冲刺会议8

    进展:重新规划主界面,把视频录制暂放到主页面里,先实现功能,视频提醒后期再做.

  8. FileInputStream与FileOutputStream练习题 -------------------图片拷贝

    package com.outputstream; import java.io.File; import java.io.FileInputStream; import java.io.FileNo ...

  9. eclipse异常关闭,而Tomcat然在运行解决方法

    1.eclipse异常关闭,而Tomcat然在运行,再启动tomcat会出现端口冲突 解决方法:打开任务管理器,找到javaw.exe,点击关闭,就可以了

  10. 【搜索】POJ-2718 贪心+枚举

    一.题目 Description Given a number of distinct decimal digits, you can form one integer by choosing a n ...