c++中set_difference这个函数的意义和用法

news/2024/10/18 9:25:05/

今天正好碰到了这个函数,虽然大概可以猜出这个函数的作用,但是仍然期待一个通俗易懂的解释,网上搜索了一下,搜到百度百科,感觉没有抓住重点,虽然示例也勉强可以理解,但是总感觉讲究不够直观。

下图绿色部分就是这个函数的功能了。

 

于是,最终在Notion的帮助下,我得到了以下回答,我觉得这个讲解很棒,而且示例中很贴心第改变了输出数组的大小。

set_difference是C++中的一个函数,它接受两个有序的范围作为输入,并输出在第一个范围中但不在第二个范围中的元素。输出写入到一个第三个范围中,该范围必须足够大以容纳所有输出的元素。

以下是set_difference的函数签名:

template <class InputIt1, class InputIt2, class OutputIt>
OutputIt set_difference(InputIt1 first1, InputIt1 last1,InputIt2 first2, InputIt2 last2,OutputIt d_first);

第一个和第二个输入范围由迭代器first1last1first2last2指定。第三个范围由迭代器d_first指定。该函数返回指向输出范围结尾的迭代器。

以下是set_difference的一个示例用法:

#include <iostream>
#include <algorithm>
#include <vector>int main() {std::vector<int> v1 = {1, 2, 3, 4, 5};std::vector<int> v2 = {2, 4, 6};std::vector<int> result(v1.size());auto it = std::set_difference(v1.begin(), v1.end(),v2.begin(), v2.end(),result.begin());result.resize(it - result.begin());for (auto i : result) {std::cout << i << " ";}std::cout << std::endl;return 0;
}

在此示例中,我们有两个向量v1v2。我们想要找到在v1中但不在v2中的元素。我们创建一个大小与v1相同的第三个向量result,并将其开始迭代器传递给set_difference。输出写入到result中,并且该函数返回指向输出范围结尾的迭代器。然后,我们将result调整为输出范围的大小,并打印其内容。

该程序的输出结果为:

1 3 5

这是v1v2的集合差异。

欢迎交流与讨论。


http://www.ppmy.cn/news/58364.html

相关文章

二叉树的遍历方式

文章目录 层序遍历——队列实现分析Java完整代码 先序遍历——中左右分析递归实现非递归实现——栈实现 中序遍历——左中右递归实现非递归实现——栈实现 后续遍历——左右中递归实现非递归实现——栈加标志指针实现 总结 层序遍历——队列实现 给你二叉树的根节点 root &…

( 字符串) 696. 计数二进制子串 ——【Leetcode每日一题】

❓696. 计数二进制子串 难度&#xff1a;简单 给定一个字符串 s&#xff0c;统计并返回具有相同数量 0 和 1 的非空&#xff08;连续&#xff09;子字符串的数量&#xff0c;并且这些子字符串中的所有 0 和所有 1 都是成组连续的。 重复出现&#xff08;不同位置&#xff09…

c#笔记-运算符

一元运算符 数字运算 正负 在数字前面&#xff0c;或数字类型的变量前面使用正负号&#xff0c;可以表示这个数值取自己&#xff0c;或是取相反数。 int i1 3; int i2 -3; int i3 i2;//-3 int i4 -i2;//3自增 一个数字类型在自己前面或后面连写两个或-&#xff0c;可以…

PySpark基础入门(3):RDD持久化

RDD的持久化 RDD 的数据是过程数据&#xff0c;因此需要持久化存储&#xff1b; RDD之间进行相互迭代的计算&#xff0c;新的RDD的生成代表着旧的RDD的消失&#xff1b;这样的特性可以最大化地利用资源&#xff0c;老旧地RDD可以及时地从内存中清理&#xff0c;从而给后续地计…

Android逆向实战(一)腾讯新闻去开屏广告

上次反编译一个工具类app失败&#xff0c;原因是使用了360加固&#xff0c;回编译后无法启动。一般来讲&#xff0c;大厂的app考虑到性能、兼容性、包体积等&#xff0c;通常不用加固。因此&#xff0c;本次我们选一个大一些的app-腾讯新闻。写在前面&#xff1a;本篇博客仅用来…

【LeetCode股票买卖系列:122. 买卖股票的最佳时机 II | 贪心 | 暴力递归=>记忆化搜索=>动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

PHP面试宝典之Mysql数据库基础篇

字符类型&#xff1a; tinyint(4)&#xff1a;占1个字节&#xff0c;4代表字段值长度&#xff0c;用0填充&#xff0c;搭配zero fill使用 有符号&#xff1a;取值范围 负128 &#xff5e; 正127&#xff1b; 无符号&#xff1a;取值范围 0 &#xff5e; 255&#xff1b; 默认无…

APK文件结构

文件结构 assets文件用来存放需要打包到Android 应用程序的静态资源文件&#xff0c;例如图片资源文件&#xff0c;JSON配置文件&#xff0c;渠道配置文件&#xff0c;二进制数据文件&#xff0c;HTML5离线资源文件等 与res/raw目录不同的数&#xff0c;assets目录支持任意深度…