zoukankan      html  css  js  c++  java
  • STL之algorithm、numeric、functional

    <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,不可在无序序列中使用

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

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

    1 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替换成8,其中3可以是函数满足条件的被替换

    accumulate:求和

    fill:填充某个数值

    set_union:重复的部分没有进去

    set_intersection:交集

    set_difference:差集

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

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

  • 相关阅读:
    seajs加载angularjs
    seajs加载jquery提示$ is not a function
    java 动态代理
    C#第三章--对象和类
    Android笔记--两种双击退出程序的方法
    Android--Volley基本用法及自定义
    Win10专业版只要12.99元?应用商店Bug福利也算数
    新人报道
    排序

  • 原文地址:https://www.cnblogs.com/XCoderLiu/p/3525600.html
Copyright © 2011-2022 走看看