C++泛型算法总结
1
accumulate(b,e,T) 累和(基础和为T)
注意T的类型必须和序列中元素类型相同,如double序列后面的T就必须是0.0,如果是0就会把序列中的数当成int进行求和
2
count(b,e,T) 计数,查找[b,e)中T出现的次数
3
equal(b1,e1,b2) 确定是否相同,[b1,e1)为序列1,b2为序列2开头
默认b2序列长度比b1到e1要长
4
fill(b,e,T) 将[b,e)元素全部替换为T
fill_n(b,N,T) 将b开始的N个元素替换为T
默认从b开始还有不小于N个元素,否则出错!
5
copy(b1,e1,b2) 将b1到e1的元素复制到b2开始序列中去,返回b2复制的最后一个元素的下一个位置迭代器
注意b2开始也要有足够长的数据,否则出错!
6
replace(b,e,T1,T2) 将b到e区间内等于T1的值都改为T2,改变原序列
replace_copy(b1,e1,b2,T1,T2) 相比replace不改变原序列,而是在b2后复制b1到e1并做相应替换
7
sort(b,e) 排序
auto iter=unique(b,e) 把出现超过一次的放到序列末尾,返回冗余尾子串的开头
erase(iter,e) 删除尾部的冗余序列,完成去重
sort可以加谓词参数以使用自定义规则进行排序
sort(b,e,F)
stable_sort(b,e) 稳定排序,相同元素保留原先顺序不变
8
for_each(b,e,F) 对于b到e每个元素调用F函数(如果F的参数是引用就可以改动b到e的值),F可以是lambda表达式
transform(b1,e1,b2,F) 对于b1到e1每个元素都用F转换并顺序存入b2开始的位置 (b2可以等于b1,此时函数效果相当于上面的for_each(b1,e1,F)了),F可以是lambda表达式
lambda匿名表达式:
[捕获列表] (参数) ->return type {函数体}
其中[捕获列表]和{函数体}必须有,其他可以省略。
捕获列表一定是lambda表达式存在的函数中的局部非static变量或者所在函数的形参。
因为lambda表达式可以直接使用局部static、全局、函数之外的名字。
显式捕获:捕获的局部非static变量写在参数()里,加&就代表捕获引用,否则捕获的是拷贝。
隐式捕获:(=)或(&) ,即告诉编译器函数体里不知道哪来的变量就当做是母函数里的。
= 代表函数体中的未知变量是从母函数捕获的拷贝
& 代表函数体中的未知变量是从母函数捕获的引用
C++泛型算法总结的更多相关文章
- C++ 泛型算法
<C++ Primer 4th>读书笔记 标准容器(the standard container)定义了很少的操作.标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛 ...
- C++的那些事:容器和泛型算法
一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.q ...
- C++ Primer : 第十章 : 泛型算法 之 只读、写和排序算法
大多数算法都定义在<algorithm>头文件里,而标准库还在头文件<numeric>里定义了一组数值泛型算法,比如accumulate. ● find算法,算法接受一对迭代 ...
- Chapter10:泛型算法
泛型算法的基础是迭代器. 迭代器令算法不依赖于容器,但是算法依赖于元素类型的操作.也即:算法永远不会执行容器的操作. 那么,如果想向容器中添加元素或者执行其他的一些操作呢?标准库提供了插入迭代器来完成 ...
- 【STL】帮你复习STL泛型算法 一
STL泛型算法 #include <iostream> #include <vector> #include <algorithm> #include <it ...
- C++ Primer 5th 第10章 泛型算法
练习10.1:头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值作为参数.count返回给定值在序列中出现的次数.编写程序,读取int序列存入vector ...
- C++标准库之泛型算法
本文中算法都是指泛型算法. 基本要点: 1)算法使用迭代器进行操作. 2)不依赖容器,但容器希望使用算法,就必须提供接口. 3)通用算法永远不会执行容器操作.操作仅指:更改容器大小的操作.但,容器内部 ...
- C++ Primer 读书笔记:第11章 泛型算法
第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数 ...
- STL的一些泛型算法
源地址:http://blog.csdn.net/byijie/article/details/8142859 从福州大学资料里摘下来的我现在能理解的泛型算法 algorithm min(a,b) 返 ...
- 【足迹C++primer】30、概要(泛型算法)
概要(泛型算法) 大多数算法的头文件中定义algorithm在. 标准库也是第一个文件numeric它定义了一套通用算法. #include<iostream> #include<n ...
随机推荐
- WebGL_0001:3D页面的重置分辨率和横竖屏事件
1,事件 重置分辩率事件 window.addEventListener("resize", a, !1) 横竖屏切换事件 window.addEventListener(&quo ...
- 回溯经典(指定位置N皇后问题)
N皇后问题自不必多说,这道题的先行条件是在放置的时候已经指定了一个棋子的位置. 输入第一行为N,第二行为指定棋子的坐标(x,y):输出方案总数以及按字典序升序的各种方案. 思路: 首先是回溯,其次对待 ...
- CSS:display:flex详解
水平居中很容易实现,但是一般垂直居中好像不是很好实现,一般我们都会用position.left等等进行定位:但是flex很好的解决了这个问题 Flex就是"弹性布局",现在应用很多 ...
- Codeforce 519B - A and B and Compilation Errors
A and B are preparing themselves for programming contests. B loves to debug his code. But before he ...
- Spring5源码阅读环境搭建-gradle构建编译
前沿:Spring系列生态十分丰富,涉及到各个方面.但是作为Spring生态的核心基础Spring,是最重要的环节,需要理解Spring的设计原理,我们需要解读源码. 在构建Spring源码阅 ...
- pick the stone game
我该如何去触摸这类问题嘞! 取石子游戏 1堆石子有n个,两人轮流取. 先取者第1次可以取任意多个,但不能全部取完. 以后每次取的石子数不能超过上次取子数的2倍. 取完者胜.先取者负输出"Se ...
- Hackintosh相关资源站
猫叔博客 https://www.maoshu.cc/ 大神RehabMan https://bitbucket.org/RehabMan/ dsdt/ssdt打补丁译文 https://blog.c ...
- JS高级---浅拷贝
浅拷贝 拷贝就是复制, 就相当于把一个对象中的所有的内容, 复制一份给另一个对象, 直接复制, 或者说, 就是把一个对象的地址给了另一个对象, 他们指向相同, 两个对象之间有共同的属性或者方法, ...
- python面试的100题(13)
29.Given an array of integers 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.示例:给定nums ...
- JUC-JUC是什么?
一.JUC是什么? java.util.concurrent在并发编程中使用的工具类 进程/线程回顾 1.进程/线程是什么? 进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是 ...