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;
}
相关推荐
Omigeq13 分钟前
1.4 - 曲线生成轨迹优化算法(以BSpline和ReedsShepp为例) - Python运动规划库教程(Python Motion Planning)
开发语言·人工智能·python·算法·机器人
郭涤生17 分钟前
C++模板元编程理论基础简介
c++
CheerWWW31 分钟前
C++学习笔记——栈内存与堆内存、宏、auto、std::array
c++·笔记·学习
网络工程小王35 分钟前
【大模型(LLM)的业务开发】学习笔记
人工智能·算法·机器学习
y = xⁿ37 分钟前
【Leet Code 】滑动窗口
java·算法·leetcode
WBluuue40 分钟前
数据结构与算法:二项式定理和二项式反演
c++·算法
nianniannnn40 分钟前
力扣104.二叉树的最大深度 110. 平衡二叉树
算法·leetcode·深度优先
_深海凉_1 小时前
LeetCode热题100-只出现一次的数字
算法·leetcode·职场和发展
yashuk1 小时前
C语言 vs. C++ ,哪个更适合初学者?
c语言·c++·面向对象编程·初学者·学习路径
知识分享小能手1 小时前
MongoDB入门学习教程,从入门到精通,在生产环境中设置MongoDB(21)
数据库·学习·mongodb