zoukankan      html  css  js  c++  java
  • C++ STL 常用算术和生成算法

    C++ STL 常用算术和生成算法

    accumulate()

    accumulate: 对指定范围内的元素求和,然后结果再加上一个由val指定的初始值。

    #include<numeric>

    vector<int> vecIntA;
    vecIntA.push_back(1);
    vecIntA.push_back(3);
    vecIntA.push_back(5);
    vecIntA.push_back(7);
    vecIntA.push_back(9);
    int iSum = accumulate(vecIntA.begin(), vecIntA.end(), 100); //iSum==125

    fill()

    fill: 将输入值赋给标志范围内的所有元素。

    vector<int> vecIntA;
    vecIntA.push_back(1);
    vecIntA.push_back(3);
    vecIntA.push_back(5);
    vecIntA.push_back(7);
    vecIntA.push_back(9);
    fill(vecIntA.begin(), vecIntA.end(), 8); //8, 8, 8, 8, 8常用的集合算法

    set_union(),set_intersection(),set_difference()

    set_union: 构造一个有序序列,包含两个有序序列的并集。

    set_intersection: 构造一个有序序列,包含两个有序序列的交集。

    set_difference: 构造一个有序序列,该序列保留第一个有序序列中存在而第二个有 序序列中不存在的元素。

    vector<int> vecIntA;
    vecIntA.push_back(1);
    vecIntA.push_back(3);
    vecIntA.push_back(5);
    vecIntA.push_back(7);
    vecIntA.push_back(9);

    vector<int> vecIntB;
    vecIntB.push_back(1);
    vecIntB.push_back(3);
    vecIntB.push_back(5);
    vecIntB.push_back(6);
    vecIntB.push_back(8);

    vector<int> vecIntC;
    vecIntC.resize(10);

    //并集
    set_union(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin()); //vecIntC : {1,3,5,6,7,8,9,0,0,0}

    //交集
    fill(vecIntC.begin(),vecIntC.end(),0);
    set_intersection(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin()); //vecIntC: {1,3,5,0,0,0,0,0,0,0}

    //差集
    fill(vecIntC.begin(),vecIntC.end(),0);
    set_difference(vecIntA.begin(), vecIntA.end(), vecIntB.begin(), vecIntB.end(), vecIntC.begin()); //vecIntC: {7,9,0,0,0,0,0,0,0,0}

  • 相关阅读:
    多播委托和匿名方法再加上Lambda表达式
    委托
    从警察抓小偷看委托
    StringBuilder
    C#修饰符详解
    数据结构与算法之队列
    数据结构与算法之栈
    win10重复安装
    网络编程基础
    PrintPreviewControl
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7793466.html
Copyright © 2011-2022 走看看