• STL 中统计计算相关算法总结


    count

    ①.头文件

    count 算法定义在头文件 #include 中。

    ②.算法作用

    count 算法是使用 == 操作符统计指定范围内和指定元素值相等的元素的个数。

    ③.代码示例

    vector<int> vec = { 1,2,3,4,5,6,7,8,9 };  
    cout <<"vec 中 5 的个数:"<< count(vec.begin(), vec.end(), 5) << endl;
    
    • 1
    • 2

    count_if

    ①.头文件

    count_if 算法定义在头文件 #include 中。

    ②.算法作用

    count_if 算法是使用指定的比较函数,统计指定范围内满足添加的元素的个数。

    ③.代码示例

    vector<int> vec = { 1,2,3,4,5,6,7,8,9 };  
    cout << "vec 中大于 4 的个数:" << count_if(vec.begin(), vec.end(), [&](int i) { return i > 4; }) << endl;
    
    • 1
    • 2

    max_element

    ①.头文件

    max_element 算法定义在头文件 #include 中。

    ②.算法作用

    max_element 算法返回指定范围内最大值元素的迭代器。

    ③.代码示例

    vector<int> vec = { 1,2,3,4,5,6,7,8,9 };  
    cout<<"vec 中最大值元素下标:"<<  max_element(vec.begin(), vec.end()) - vec.begin() << endl;
    
    • 1
    • 2

    min_element

    ①.头文件

    min_element 算法定义在头文件 #include 中。

    ②.算法作用

    min_element 算法返回指定范围内最小值元素的迭代器。

    ③.代码示例

    vector<int> vec = { 1,2,3,4,5,6,7,8,9 };  
    cout<<"vec 中最小值元素下标:"<<  min_element(vec.begin(), vec.end()) - vec.begin() << endl;
    
    • 1
    • 2

    accumulate

    ①.头文件

    accumulate 算法定义在头文件 #include 中。

    ②.算法作用

    accumulate 算法计算指定范围到所有元素的和,传入第 3 个参数是计算到初始值。

    ③.代码示例

    vector<int> vec = { 1,2,3,4,5,6,7,8,9 };  
    cout<<"vec 元素和:"<< accumulate(vec.begin(), vec.end(),0)  << endl;
    
    • 1
    • 2

    partial_sum

    ①.头文件

    partial_sum 算法定义在头文件 #include 中。

    ②.算法作用

    partial_sum 算法是生成一个新的序列,序列中每一项都是前一项的计算结果和当前项进行计算的结果,默认是加法运算,也可以自定义谓词。

    ③.代码示例

    vector<int> vec = { 1,2,3,4,5,6,7,8,9 };
    cout << "原序列:" << endl;
    for_each(vec.begin(), vec.end(), [](int i) { cout << i << ","; });
    
    vector<int> preVec;
    partial_sum(vec.begin(), vec.end(), back_inserter(preVec));
    
    cout << endl << "前缀和:" << endl;
    for_each(preVec.begin(), preVec.end(), [](int i) { cout << i <<","; });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    gitignore: git上传时忽略不需要上传的文件
    开发者的商业智慧:产品立项策划你知道多少?
    C/C++ 乘积尾零问题(蓝桥杯)
    Java集合——List接口
    微信小程序如何转云开发
    thinkphp:数据库查询操作六:查询的数据是否为空,如果为空就设置为0,并且保留数据小数点,查询的数据是时间戳转换为时间
    小公司需要使用微服务架构吗?
    洛谷-P1106-删数问题
    WhatsApp Business 与 Google My Business:它们的运作方式和不同之处
    基于复杂环境下的雷达目标检测技术(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/lizhichao410/article/details/125456518