、算法

  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算法的更多相关文章

  1. STL算法

    STL算法部分主要由头文 件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorit ...

  2. 【转】三十分钟学会STL算法

    转载自: http://net.pku.edu.cn/~yhf/UsingSTL.htm 这是本小人书.原名是<using stl>,不知道是谁写的.不过我倒觉得很有趣,所以化了两个晚上把 ...

  3. C++11 STL算法简介

    STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是ANS ...

  4. C++ 11 STL算法

    STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包含头文件<algorith ...

  5. STL 算法罗列 (转)

    非修改性序列操作(12个) 循环 for_each() 对序列中的每个元素执行某操作 查找 find() 在序列中找出某个值的第一次出现的位置 find_if() 在序列中找出符合某谓词的第一个元素 ...

  6. STL算法与树结构模板

    STL算法 STL 算法是一些模板函数,提供了相当多的有用算法和操作,从简单如for_each(遍历)到复杂如stable_sort(稳定排序),头文件是:#include <algorithm ...

  7. STL算法分类记忆

    STL算法主要是我们强大的标准库中以迭代器或数值或函数对象为参数预先定义好的一系列算法操作. 在STL算法分类中首先要提的就是两个普遍存在的后缀: _if _copy 其中这两个后缀的作用分别是:一. ...

  8. C++标准模板库STL算法与自适应容器(栈和队列)

    参考<21天学通C++>第23与第24章节,对STL算法与自适应容器进行介绍. 实际上在前面的STL顺序容器.关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数.而自适应容器是在 ...

  9. 【C++】STL算法

    STL算法 标签:c++ 目录 STL算法 一.不变序列算法 1.熟悉的min(), max() 2.找最值还自己动手么?不了不了 3.熟悉的find()和新学会的count() 二.变值算法 1.f ...

  10. 【STL源码学习】STL算法学习之四

    排序算法是STL算法中相当常用的一个类别,包括部分排序和全部排序算法,依据效率和应用场景进行选择. 明细: sort 函数原型: template <class RandomAccessIter ...

随机推荐

  1. 【转】AJAX 跨域请求 - JSONP获取JSON数据

    来源:http://justcoding.iteye.com/blog/1366102/ Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流 ...

  2. Axure8破解码

    升级了 8.0.0.3321 版本后,原来的 license 失效了,解决方法就是使用下面的这组注册码 License:米 业成 (STUDENT)Key:nFmqBBvEqdvbiUjy8NZiyW ...

  3. Django 详解 信号Signal

    Django信号 Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. Model signals pre_init # ...

  4. Python API简单验证

    前言 因为CMDB内部的需求,需要一个API进行数据传输,用来传递需要抓取的服务端信息信息给抓取的autoclient,autoclient抓取好之后再通过API传输到服务器,保存到数据库.但是为了防 ...

  5. mysql 查询优化 ~ 多表查询改写思路

    一 简介:在之前我们从基础可知,现在咱们聊一下改写的几种思路二 分类:  1 left join  2 inner join  3 right join三 具体改写思路:思路1 本身不包含子查询,将多 ...

  6. hibernate 嵌套事务

    hibernate 嵌套事务,多线程调试.问题麻烦啊,后续有时间补全.

  7. 【多线程补充】SimpleDateFormat非线程安全与线程中、线程组中异常的处理

    1.SimpleDateFormat非线程安全的问题 类SimpleDateFormat主要负责日期的转换与格式化,但在多线程环境中,使用此类容易造成数据转换及处理的不正确,因为SimpleDateF ...

  8. TextView 文字拼接

    //引用文字 String testStr = (getResources().getString(R.string.test_str,"<font color='#ff0000'&g ...

  9. python中用selenium调Firefox报错问题

    python在用selenium调Firefox时报错: Traceback (most recent call last):  File "G:\python_work\chapter11 ...

  10. webrtc学习笔记

    获取笔记本摄像头视频流 <html> <meta http-equiv="Content-Type" content="text/html; chars ...