STL学习(十一、常用的算数算法和集合算法)

目录

一、常用的算数算法

1.accmulate

2.fill

二、常用的集合算法

1.set_intersection

2.set_union

3.set_difference


一、常用的算数算法

包含头文件为<numeric>

1.accmulate

函数原型

accmulate(iterator beg, iterator end, value)

// 计算元素累计和

// 开始迭代器

// 结束迭代器

// 初始值

2.fill

函数原型

fill(iterator beg, iterator end, value)

// 向容器中填充元素

// beg开始迭代器

// end 结束迭代器

// value 要填充的值

二、常用的集合算法

1.set_intersection

函数原型

set_intersection(iterator beg, iterator end, iterator beg2, iterator end2, iterator dest)

// 求两个集合的交集,两个集合必须是有序序列

// beg1 容器1开始迭代器

// end 容器1结束迭代器

// beg2 容器2开始迭代器

// end2 容器2结束迭代器

// dest 目标容器开始迭代器

// 返回值为容器最后一个非零值对应的迭代器。因为容器的size可能大于交集的size,返回值就是交集最后一个元素对应的迭代器。

2.set_union

函数原型

set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

// 求两个集合的并集

// 注意两个集合必须是有序序列

// beg1 容器1开始迭代器

// end 容器1结束迭代器

// beg2 容器2开始迭代器

// end2 容器2结束迭代器

// dest 目标容器开始迭代器

3.set_difference

cpp 复制代码
#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<numeric>
using namespace std;
void test2()
{   
    vector<int> v;
    vector<int> v1;
    for(int i=0;i<10;i++)
    {
        v.push_back(i);
        v1.push_back(i+5);
    }
    cout << "v - v1" << endl;
    vector<int> v2;
    v2.resize(v1.size()+v.size());
    vector<int>::iterator it_end = set_difference(v.begin(),v.end(),v1.begin(),v1.end(),v2.begin());
    for(vector<int>::iterator it=v2.begin();it!=it_end;it++)
    {
        cout << *it << " ";
    }
    cout << endl;

    cout << "v1- v" << endl;
    it_end = set_difference(v1.begin(),v1.end(),v.begin(),v.end(),v2.begin());
    for(vector<int>::iterator it=v2.begin();it!=it_end;it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

int main()
{
    test2();
    return 0;
}
相关推荐
I_LPL6 小时前
day21 代码随想录算法训练营 二叉树专题8
算法·二叉树·递归
可编程芯片开发6 小时前
基于PSO粒子群优化PI控制器的无刷直流电机最优控制系统simulink建模与仿真
人工智能·算法·simulink·pso·pi控制器·pso-pi
cpp_25016 小时前
P8448 [LSOT-1] 暴龙的土豆
数据结构·c++·算法·题解·洛谷
lcj25116 小时前
深入理解指针(4):qsort 函数 & 通过冒泡排序实现
c语言·数据结构·算法
fie88896 小时前
基于MATLAB的转子动力学建模与仿真实现(含碰摩、不平衡激励)
开发语言·算法·matlab
魔力军6 小时前
Rust学习Day3: 3个小demo实现
java·学习·rust
唐梓航-求职中6 小时前
编程大师-技术-算法-leetcode-1472. 设计浏览器历史记录
算法·leetcode
MSTcheng.6 小时前
【C++】C++智能指针
开发语言·c++·智能指针
_OP_CHEN6 小时前
【算法基础篇】(五十八)线性代数之高斯消元法从原理到实战:手撕模板 + 洛谷真题全解
线性代数·算法·蓝桥杯·c/c++·线性方程组·acm/icpc·高斯消元法
云深处@6 小时前
【C++11】部分特性
开发语言·c++