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

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. Python图形界面开发—wxPython库的布局管理及页面切换

    前言 wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现.GUI程序的开发中界面布局是很重要的一个部分,合理的页面布局能够给予用户良好使用体验.虽然 ...

  2. [奇葩问题] Error Domain=NSURLErrorDomain Code=-1003

    问题描述: 新上线的产品,ios同事拿着一串报错来找我,日志如下:err =Error Domain=NSURLErrorDomain Code=-1003 "未能找到使用指定主机名的服务器 ...

  3. Docker容器和本机之间的文件传输 使用Docker部署Tomcat项目

    Docker容器和本机之间的文件传输. http://blog.csdn.net/leafage_m/article/details/72082011 使用Docker部署Tomcat项目 http: ...

  4. 第二次作业(homework-02)成绩公布

    学位后三位和对应成绩: 057 0008 4011 4012 7014 5015 5017 6018 0019 0026 2027 7036 0038 7.5046 7048 6.5051 0061 ...

  5. iOS 开发学习-类的创建与实现,与java语言的对比

    Person.h #import <Foundation/Foundation.h> @interface Person : NSObject { //在{}中定义属性(全局变量/实例变量 ...

  6. servlet 路径问题

    首先明确绝对路径与相对路径,绝对路径:相对于盘符的路径c://a.txt,相对路径格式如/web/hello.jsp.还有一个是网络路径http://www.baidu.com/...... 一般来说 ...

  7. python实现树莓派开机自动发送IP到指定邮箱

    #!/usr/bin/python # -*- coding:UTF-8 -*- #测试发送邮件163邮箱发送到qq邮箱 import smtplib from email.mime.text imp ...

  8. Hibernate利用纯sql

    String hql = "select * from shop where shop.strid in(select strid from moneythreeshop where mon ...

  9. C++ 游戏之点点水果

    大二时利用C++编写的点水果小游戏 程序代码总共3个文件,main.cpp Fruit.h Fruit.cpp  代码将在图片下面给出 至于讲解,由于过了一年多的时间,有点忘记了,但我会努力回忆并即时 ...

  10. C# 通过http post 请求上传图片和参数

    一.C# Winform或控制台 /// <summary> /// 通过http上传图片及传参数 /// </summary> /// <param name=&quo ...