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

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. Python20 - Day09

    python并发编程之多线程理论 1.什么是线程? 进程只是用来把资源集中到一起(进程是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位. 多线程(多个控制线程)的概念是,在一个进程中存在 ...

  2. Daily Scrum (2015/10/29)

    今天晚上我们学霸项目的三个小组在一起开会,讨论如何能在后期使我们三个项目更好地结合在一起.为了三个小组的能够同时工作,不出现某一小组因需要其他小组成果而停滞的情况,我们决定围绕lucene,solr, ...

  3. [不明所以]android 5.0 couldn't find "libmsc.so"

    用5.0 mi2调试的时候 search那边不行, 出现...couldn't find "libmsc.so" 我这边情况的解决方法是 在armeabi的libmsc.so复制一 ...

  4. 第三个spirit(第十四天)

    一 .进度(自习室) 本来十号要开始进行第三次冲刺,不过因为团队很多成员要进行协会和组织的换届,而且团队还换了新 人又加了人进来,所以我们今天才是第三次冲刺的第一天.我们进行了新团队的第一次会议.基于 ...

  5. BETA-3

    前言 我们居然又冲刺了·三 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 过去两天完成了哪些任务 一堆deadline截至前的两天,为了图形学和编译原理毅然决然地放弃冲刺 接下 ...

  6. SQL之联合查询学习笔记

    定义: 联合查询可合并多个相似的选择查询的结果集.等同于将一个表追加到另一个表,从而实现将两个表的查询组合到一起,使用谓词为UNION或UNION ALL. 语法格式 UNION 可以将两个或两个以上 ...

  7. mac下搭建MySql环境基本步骤

    准备工作做完后,开始: 创建数据库 step1: 在mac中->系统偏好设置->最下边点MySQL 在弹出页面中 关闭mysql服务(点击stop mysql server) step2: ...

  8. PROFIBUS-DP

    PROFIBUS – DP的DP即Decentralized Periphery.它具有高速低成本,用于设备级控制系统与分散式I/O的通信.它与PROFIBUS-PA(Process Automati ...

  9. 基于windowsphone7的控制ppt播放

    最近突然想起了一个学长的一个利用手机控制ppt播放的一个创意,并想将其在windows phone7上实现一下. 经过几天的努力已经可以控制ppt的播放,暂停,上一张,下一张了,并且电脑会将当前ppt ...

  10. es6 javascript对象方法Object.assign()

    es6 javascript对象方法Object.assign() 2016年12月01日 16:42:34 阅读数:38583 1  基本用法 Object.assign方法用于对象的合并,将源对象 ...