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

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. Windows搭建python开发环境

    python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 基本概念Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum ...

  2. js/jquery去掉空格,回车,换行示例代码

    Jquery: $("#accuracy").val($("#accuracy").val().replace(/\ +/g,""));// ...

  3. C# Js 时间格式化问题

    C# 后台: .ToString("dd-MMM-yyyy", System.Globalization. DateTimeFormatInfo.InvariantInfo) eg ...

  4. C++:构造函数3——浅拷贝和深拷贝

    一.默认拷贝构造函数 拷贝构造函数是一种特殊的构造函数(详情见:http://www.cnblogs.com/duwenxing/p/7429777.html),如果用户在定义类时没有显式地编写拷贝构 ...

  5. 【每日scrum】第一次冲刺day1

    冲刺第一天,明确了自己的任务,数据分析与数据字典.

  6. c++课的圆周面积

    又回顾了一下一两个月没动过的类,似乎又有点手生了,不过还好还可以做. 在栋哥的推荐下下载了一个vs2015,表示从dev的白鼠形式的简单操作缓过来还有些不习惯呢,不过有些功能,例如诊断还是挺好用的 这 ...

  7. MIT挑战(如何在12个月内自学完成MIT计算机科学的33门课程|内附MIT公开课程资源和学习顺序

    译者注:本文译自Scott H. Young的博客,Scott拥有超强的学习能力,曾在12个月内自学完成麻省理工学院计算机科学的33门课程.本文就是他个人对于这次MIT挑战的介绍和总结. 版权声明:本 ...

  8. 将通过<input type="file">上传的txt文件存储在localStorage,提取并构建File对象

    参考博文: JS 之Blob 对象类型 在本地存储localStorage中保存图片和文件 <input type="file" id="jobData" ...

  9. synchronized、锁、多线程同步的原理是咋样

    先综述个结论: 一般说的synchronized用来做多线程同步功能,其实synchronized只是提供多线程互斥,而对象的wait()和notify()方法才提供线程的同步功能. 一般说synch ...

  10. EF 小数位的保留

    问题描述:当采用EF的DbContext保存decimal类型数据到数据库,默认只会保存小数点后的前2位小数,其余均置0:例如保存101.182352152322,实际存到数据库里的数据为101.18 ...