C++ Primer学习总结 第10章 泛型算法

第10章 泛型算法

1.    find()泛型算法使用示例:

2.    只读算法accumulate:对所给范围的元素求和并返回. 注意accumulate的第3个参数决定着它的返回类型. 即如果第3个参数是double,就算迭代器里都是int,最终还是返回double类型的数.

3.    只读算法equal:比较前两个迭代器表示范围的所有元素是否与第3个迭代器表示的对应位置的元素都相同,如果相同返回true。两个容器类型可以不同,保存的元素类型也可以不同,只要元素之间可以比较即可.如string类型和const
char*类型之间的比较.

4.    写容器算法fill:将指定值赋予容器中的元素. 容器不能为空.

5.    使用back_inserter(一种插入迭代器)的示例:

6.    拷贝算法copy 和 replace. 只有replace_copy不换改变原迭代器所指的容器内的元素值.

7.    排序去重算法sort和unique.

注意:unique并不真正删除容器重复元素,它只不过是把重复元素用不重复元素的值覆盖,容器后面的空间依然有效,不过值是多少就不一定了.

8.    稳定排序stable_sort 与 定制操作:

9.    lambda与find_if的用法:

10.  for_earch算法:对迭代器范围内的每个元素调用一元谓词:

11.  lambda的特性:

12.  bind函数:P354

13.  插入迭代器back_inserter, front_inserter, inserter:

对插入迭代器it执行*it ,++it, it++,it--,--it操作没有任何作用.

假设auto it=inserter(vc,vc.begin()+1); 生成了一个插入迭代器,那么通过it=20插入元素的话,永远只插在vc.begin()+1的前面:

使用inserter:

使用back_inserter:

使用front_inserter:

14.  反向迭代器 P363

反向迭代器可以用过rbegin()和rend()方法获得,其++,--与普通迭代器的操作含义不同,需要注意. 可以用base()方法将一个反向迭代器转为普通迭代器.

时间: 2024-10-22 11:35:02

C++ Primer学习总结 第10章 泛型算法的相关文章

《C++primer》v5 第10章 泛型算法 读书笔记 习题答案

10.1 using namespace std; int main() { vector<int> vec; int a; cin>>a; int v; while(cin>>v) vec.push_back(v); cout<<a<<" : "<<count(vec.begin(),vec.end(),a)<<endl; return 0; } 10.2 using namespace std; i

第十一章 泛型算法 C++ PRIMER

vector<int>::const_iterator result = find(vector.begin(). vector.end(),search_value); 如果查找失败,分会end()  如果有两个,会返回哪一个的迭代器? int *reauslt = find(ia,ia+6,search_value); 也可以同样处理字符串 算法要以<algorithm><numeric>,依赖于迭代器和迭代器的算法实现,算法可能改变值,可能移动元素,单从不直接添加

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

第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数. 2.常用的泛型算法函数: fill,fill_n, copy, replace, sort, unique, count_if, stable_sort 此外在有一个谓词函数会结合以上的函数使用,像sort, count_if等 3.再谈迭代器 (1)插入迭代器 back_inserter, f

【足迹C++primer】30、概述(泛型算法)

概述(泛型算法) 大多数算法都定义在头文件algorithm中.标准库还在头文件numeric中定义了一组泛型算法. #include<iostream> #include<numeric> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; for(size_t t=0 ; t != 44 ; ++t) { vec.pus

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第10章 | 充电时刻

第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简单的模块 #hello.py print ("Hello,World!") >>> import hello Traceback (most recent call last): File "<pyshell#56>", line 1, i

C++primer第十一章 泛型算法

标准库容器定义的操作非常少.标准库没有给容器添加大量的功能函数,而是选择提供一组算法,这些算法大都不依赖特定的容器类型,是“泛型”的,可作用在不同类型的容器和不同类型的元素上. 因为它们实现共同的操作,所以称之为“算法”:而“泛型”指的是它们可以操作在多种容器类型上——不但可作用于 vector 或 list 这些标准库类型,还可用在内置数组类型.甚至其他类型的序列上. 11.1. 概述 假设有一个 int 的 vector 对象,名为 vec,我们想知道其中包含某个特定值.解决这个问题最简单的

【足迹C++primer】30、概要(泛型算法)

概要(泛型算法) 大多数算法的头文件中定义algorithm在. 标准库也是第一个文件numeric它定义了一套通用算法. #include<iostream> #include<numeric> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; for(size_t t=0 ; t != 44 ; ++t) { vec.

C++primer拾遗(第十章:泛型算法)

泛型算法,重要而且常用.虽然只是看了一遍书,但是感觉需要研究的地方还很多. 总结不易,转载注明出处,谢谢. http://www.cnblogs.com/linhaowei0389/

【C语言学习】《C Primer Plus》第10章 数组和指针

学习总结 1.数组初始化方式: int a[]={1,2,3} int a[SIZE]={1,2,3} //SIZE是宏定义,数组初始化个数不能大于SIZE,否则报错:当个数小 //SIZE,自动补0:只定义不初始化,默认值是当前存储单元中已有的数值. int a[SIZE/不定长]={1,[3],2} //C99支持通过[int]=x来定义具体位置值,跳过的默认值为0. 2.通过const修饰的数组为只读数组,数组的每个元素当成常量来处理,如: const int a[2]={1,2}; co