(五)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 ...
随机推荐
- cocos2dx 3.3 笔记
ccs3 加入了 rapidjson ->一个JSON解析库https://github.com/miloyip/rapidjson
- VMWare14 安装Mac OS系统(图解)
★ 背景 瞅了瞅自己干瘪的钱包,没忍心入手期待已久的 macPro,只好在虚拟机里玩一下 mac好了,等以后钱包傲气的时候再来个真实的. 安装环境: windows10 VMWare14.2 一.准备 ...
- Centos 04 基础系统优化命令
在Linux这个系统当中,几乎所有的硬件设备文件都在/dev这个目录内.举例来说,IDE介面的硬盘的文件名称即为/dev/hd[a-d],其中, 括号内的字母为a-d当中的任意一个,亦即有/dev/h ...
- scrapy基本使用(一)
scrapy基本使用(一) 参考文档:Scrapy入门教程 http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html scrapy ...
- Django学习手册 - reverse()反转URL
前端: <h1>测试</h1> <a href="/ce_test/?id=1">1按键</a> <a href=" ...
- qt5.6.2简单操作mysql数据库
1.新建个项目后,需要在.pro工程文件在中添加QT += sql,否则编译会出错: 2.如果出现数据库驱动未加载,则需要把mysql下的libmysql.dll拷贝到D:\Qt5.6.2\5.6\m ...
- ActiveMQ静态网络链接(broker-to-broker)
ActiveMQ的网络连接分为静态连接和动态连接.本章研究静态连接. 1.ActiveMQ的networkConnector是什么 在某些情况下,需要多个ActiveMQ的Broker做集群,那么就涉 ...
- WPF StoreDataSetPaginator
public class StoreDataSetPaginator : DocumentPaginator { private DataTable dt; // Could be wrapped w ...
- 框架中的导航框架 & position定位
框架中,通过链接将一个页面显示在另一个框架中: 总框架: <frameset cols="15%,*"> <frame src="xx.html ...
- 【转】实习小记-python中可哈希对象是个啥?what is hashable object in python?
[转]实习小记-python中可哈希对象是个啥?what is hashable object in python? 废话不多说直接祭上python3.3x的文档:(原文链接) object.__ha ...