(五)STL算法
、算法
1、算法通过迭代器来操作容器中的数据;
2、算法为模板函数;

二、迭代器与算法
1、根据移动能力,将迭代器分成了五类

2、使用萃取,输出各个容器中,迭代器的类别
3、其中istream, ostream的迭代器为input和output

4、算法根据迭代器的种类,去调用相应的函数。注意返回值是通过萃取来确定的difference_type

5、虽然只定义了两类,但由于继承关系,四类都可以满足。
6、拷贝(真是复杂啊,感谢候大师!),根据迭代器类型,选择合适的函数。用到了两类萃取,一类是迭代器萃取,
另一类是类型萃取:对类型提问(拷贝赋值是否重要等)

三、算法示例
1、stl中的算法,必须要有两个迭代器的指针

2、accumulate
(1)除了本身默认的累加操作为,还提供了一个自定义操作的版本;
(2)binary_op可以是函数或者仿函数。如示例,minus<int>()为仿函数,myclass重载了()操作符,myobj也是一个仿函数;

3、for_each :c++11的新用法

4、其中replace_if的pred提供一个判断操作;replace_copy则拷贝到新区间

5、count/count_if
左边为stl空间的全局函数,右边为容器的成员函数,尽量用自带的成员函数(由图可知,只有关联容器才实现了自己的count
顺序容器只能使用全局的)

6、find/find_if

7、sort
(1) 可以自定义比较操作;
(2)rbegin, rend逆序操作;
(3)8个关联容器,本身已排序,内部没有sort成员函数;
(4)不能用全局sort排序list和forward_list

(5)rbegin和rend就相当于end和begin,不过外面接了一个适配器,来改变其行为

8、binary_search之前,需要先排序。其中lower_bound返回的是可安插的最低点,upper_bound为可安插的最高点。

(五)STL算法的更多相关文章
- STL算法
STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...
- 【转】三十分钟学会STL算法
转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把 ...
- C++11 STL算法简介
STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是ANS ...
- C++ 11 STL算法
STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorith ...
- STL 算法罗列 (转)
非修改性序列操作(12个) 循环 for_each() 对序列中的每个元素执行某操作 查找 find() 在序列中找出某个值的第一次出现的位置 find_if() 在序列中找出符合某谓词的第一个元素 ...
- STL算法与树结构模板
STL算法 STL 算法是一些模板函数,提供了相当多的有用算法和操作,从简单如for_each(遍历)到复杂如stable_sort(稳定排序),头文件是:#include <algorithm ...
- STL算法分类记忆
STL算法主要是我们强大的标准库中以迭代器或数值或函数对象为参数预先定义好的一系列算法操作. 在STL算法分类中首先要提的就是两个普遍存在的后缀: _if _copy 其中这两个后缀的作用分别是:一. ...
- C++标准模板库STL算法与自适应容器(栈和队列)
参考<21天学通C++>第23与第24章节,对STL算法与自适应容器进行介绍. 实际上在前面的STL顺序容器.关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数.而自适应容器是在 ...
- 【C++】STL算法
STL算法 标签:c++ 目录 STL算法 一.不变序列算法 1.熟悉的min(), max() 2.找最值还自己动手么?不了不了 3.熟悉的find()和新学会的count() 二.变值算法 1.f ...
- 【STL源码学习】STL算法学习之四
排序算法是STL算法中相当常用的一个类别,包括部分排序和全部排序算法,依据效率和应用场景进行选择. 明细: sort 函数原型: template <class RandomAccessIter ...
随机推荐
- [C++]动态规划系列之Warshall算法
/** * * @author Zen Johnny * @date 2018年3月31日 下午8:13:09 * */ package freeTest; /* [动态规划系列:Warshall算法 ...
- Vue.js 技术揭秘(学习) slot
slot特性分发父组件的内容 作用域插槽:通过子组件的一些数据来决定父组件实现插槽
- 标准盒模型、IE盒模型
结论:IE盒模型是陈旧知识点,除了帮助理解css3 box-sizing: border-box(等分宽度布局)外没什么用. 标准(W3C)模型中:CSS中的宽(width) = 内容 (conten ...
- jmeter(四)参数化之CSV Data Set Config 和 CSVRead函数的区别
jmeter的参数化可以添加配置元件CSV Data Set Config,也可以使用函数助手CSVRead.下面我就介绍一下2者的区别. 1.CSVRead函数,有2个参数值(路径和序号): 特点: ...
- vue-axios
vue axios全攻略 不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解.本来想在网上找找详细攻略,突然发现,axios 的官方文档本身就 ...
- 【mmall】递归查询子节点并排重
代码 @Override public ServerResponse getSelfAndChildrenCategory(Integer categoryId) { if (categoryId ! ...
- git关联了无用的,取消关联,并重置gitignore
一定要在首次上传git之前配置好 ignore文件假如操作问题不小心点了studio中可视化界面的git add . -f (强制的关联所有)这时候如果你看小git status 所有的文件都进行了远 ...
- MGR架构~ 整体性能架构的调优
一 简介:MGR集群架构的调优二 过程:本文将从各个角度来具体阐述下三 硬件 1 硬件选择相同配置的服务器,磁盘,内存,cpu性能越高越好四 网络 1 0丢包和最好万兆网卡五 MGR本身 ...
- Tomcat/7.0.81 远程代码执行漏洞复现
Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...
- 使用Windows命令行启动关闭服务(net,sc用法)
下面两个命令最好以管理员方式启动cmd窗口,否则出现权限问题. 1.net用于打开没有被禁用的服务, NET命令是功能强大的以命令行方式执行的工具. 它包含了管理网络环境.服务.用户.登陆大部分重要的 ...