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;
}
相关推荐
Greedy Alg13 小时前
LeetCode 142. 环形链表 II
算法
睡不醒的kun13 小时前
leetcode算法刷题的第三十二天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
先做个垃圾出来………13 小时前
残差连接的概念与作用
人工智能·算法·机器学习·语言模型·自然语言处理
乔宕一15 小时前
stm32 链接脚本没有 .gcc_except_table 段也能支持 C++ 异常
c++·stm32·嵌入式硬件
SuperCandyXu15 小时前
P3205 [HNOI2010] 合唱队-普及+/提高
c++·算法·洛谷
_OP_CHEN15 小时前
数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
c语言·数据结构·算法·二叉树·学习笔记··顺序结构二叉树
_君落羽_15 小时前
ARM寄存器以及异常处理
c++
Yingjun Mo15 小时前
1. 统计推断-基于神经网络与Langevin扩散的自适应潜变量建模与优化
人工智能·神经网络·算法·机器学习·概率论
free16 小时前
基于librdkafa C++客户端生产者发送数据失败问题处理#2
c++·kafka
茯苓gao16 小时前
STM32G4 电流环闭环
笔记·stm32·单片机·嵌入式硬件·学习