• 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:调用之后改变自身值并写回到指定容器

  • 相关阅读:
    namespace
    kubernetes环境搭建
    verdaccio私有仓库搭建
    mysql中间件proxysql
    MySQL存储引擎
    关于分布式系统
    转载:ETL讲解
    用原生JS 写Web首页轮播图
    javascript——记忆小便签
    转载:JavaScript 的 this 原理
  • 原文地址:https://www.cnblogs.com/XCoderLiu/p/3525600.html
Copyright © 2020-2023  润新知