<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。

<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括假发和惩罚在序列上的一些操作。

<functional>中则定义了一些模板类用以声明函数对象。

STL提供了大量实现算法的函数模板,只要我们熟悉了STL之后,许多代码可以被大大的化简,只需要通过调用一两个算法模板,就可以完成所需要的功能,从而大大地提升效率。

adjacent_find();在迭代器对标识元素范围内查找一堆相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。

例如:vecInt使用vector<int>声明的容器,现已包含1,2,2,4,5

it = adjacent_find(vecInt.begin(),vecInt.end());

此时*it == 2;

binary_search:在有序的序列中

查找value,找到则返回true,不可在无序序列中使用

 bool bfound = binary_search(setInt.begin(),setInt.end(),);

count:利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数

 int nCount = count(vecInt.begin(),vecInt.end(),elem);

count_if:利用输入函数,对标志范围内的元素进行比较操作,返回结果为true的个数

merge:合并两个容器

merge(vecIntA.begin(),vecIntA.end(),vecIntB.begin(),vecIntB.end(),vecIntC.begin());

sort:排序(默认升序)

sort(vecInt.begin(),vecInt.end());

random_shuffle:随即洗一次数据

random_shuffle(vecInt.begin(),vecInt.end());

reverse:倒序

reverse(vecInt.begin(),vecInt.end());

copy:拷贝复制函数

copy(vecIntA.begin(),vecIntA.end(),vecIntB.begin());

replase:

replace(vecIntA.begin(),vecIntA.end(),,));//3替换成8,其中3可以是函数满足条件的被替换

accumulate:求和

fill:填充某个数值

set_union:重复的部分没有进去

set_intersection:交集

set_difference:差集

for_each:回调函数去执行每一个元素

transform:调用之后改变自身值并写回到指定容器

STL之algorithm、numeric、functional的更多相关文章

  1. 数据结构中数组反转与STL库Algorithm中的reverse

    数组是个基本的线性数据结构,其实是内存中的一个块,我们可以通过c++的new来分配一个数组 int* a= new int[5]; 然后填数组的每个元素 a[0]=1; a[1]=2; a[2]=6; ...

  2. STL下<algorithm>下的reverse函数

    定义: reverse用于C++中,对给定区间所有元素进行排序,是一种反向函数,不具备排序功能.sort函数包含在头文件为#include<algorithm>的C++标准库中. 语法: ...

  3. STL下<algorithm>下的sort函数

    定义: sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序.sort函数进行排序的时间复杂度为nlog2n,比冒泡之类的排序算法效率要高,sort函数包含在头文件为#i ...

  4. STL中algorithm里的查找

    首先,选择查找算法时,区间是否排序是一个至关重要的因素.可以按是否需要排序区间分为两组: A. count,find B. binary_search,lower_bound,upper_bound, ...

  5. STL - vector algorithm

    // create vector with elements from 1 to 6 in arbitrary order vector<, , , , , }; // find and pri ...

  6. C++的STL

    今天,看一段代码的时候发现只一句话就做了个排序,是这样的: sort(rotateArray.begin(),rotateArray.end()); 很震惊,后来查了一下sort的用法, sort函数 ...

  7. c++中级 STL基础学习(二)

    deque 和vector差不多,可以在前端后端插入,一般用deque取代vector,vector只能在后端插入push_back().deque还可以push_front(),但是deque后端插 ...

  8. STL算法

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

  9. 【STL源码学习】STL算法学习之一

    第一章:引子 STL包含的算法头文件有三个:<algorithm><numeric><functional>,其中最大最常用的是<algorithm>, ...

随机推荐

  1. shiro认证

    一.通过ini文件初始化一个用户 1.通过ini配置文件创建securityManager2.调用subject.login方法主体提交认证,提交的token3.securityManager进行认证 ...

  2. Java随机生成定长纯数字或数字字母混合数

    (转)Java随机生成定长纯数字或数字字母混合数 运行效果图: 具体实现代码

  3. Java文件操作二:File文件的方法

    一.文件的判断方法 判断方法 .boolean canExecute()判断文件是否可执行 .boolean canRead()判断文件是否可读 .boolean canWrite() 判断文件是否可 ...

  4. JAVA zip解压 MALFORMED 错误

    最近在在使用zip 解压时,使用JDK1.7及以上版本在解压时,某些文件会报异常 Exception in thread "main" java.lang.IllegalArgum ...

  5. WPF中TreeView数据结构解析

    XAML.CS代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  6. 将数字n转换为字符串并保存到s中

    将数字n转换为字符串并保存到s中 参考 C程序设计语言 #include <stdio.h> #include <string.h> //reverse函数: 倒置字符串s中各 ...

  7. MVVM模式应用 之为ApplicationBarIconButton 添加Command操作属性

    在学习MVVM的过程中,总是会遇到挫折,一碰到就是花费好长时间去解决..唉,不求量,只求质. 第一种(已经实践成功): (1)http://bindableapplicationb.codeplex. ...

  8. Win7 下,离线安装 Android Studio 1.0.1 的方法

    此教程没有亲自动手试过,先保存在这里 http://download.csdn.net/detail/tuobaxiao2008/8268281

  9. RBM 与 DBN 学习笔记

    2006 年,Hinton 等人基于受限波尔兹曼机(Re- stricted Boltzmann Machines, RBMs)提出的深度信念 网络(Deep Belief Networks, DBN ...

  10. 配置SHH集群

    ==特别要注意当前用户的问题== 1. 修改路由信息 vi /etc/hosts 10.211.55.15 hmaster1 10.211.55.16 hmaster2 10.211.55.17 hs ...