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

这篇具有很好参考价值的文章主要介绍了c++中set_difference这个函数的意义和用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

 

于是,最终在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的集合差异。

欢迎交流与讨论。文章来源地址https://www.toymoban.com/news/detail-430131.html

到了这里,关于c++中set_difference这个函数的意义和用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 笔记:c++ 在函数后加const的意义

    我们定义的类的成员函数中,常常有一些成员函数 不改变类的数据成员 ,也就是说,这些函数是**\\\"只读\\\"函数**,而有一些函数要修改类数据成员的值。 如果把不改变数据成员的函数都加上const进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,

    2024年01月19日
    浏览(44)
  • 【C++】泛型编程 ① ( 函数模板 | 函数模板概念 | 函数模板意义 | 函数模板定义语法 | 函数模板调用语法 | 显式类型调用 | 自动类型推导 )

    在 C++ 语言中 , 泛型编程 的 核心就是 函数模板 和 类模板 ; 函数模板 Function Template 是 C++ 语言 中的 重要特性 ; 函数模板概念 : 建立一个 \\\" 通用函数 \\\" , 不指定该函数的 函数返回值类型 和 函数参数类型 , 仅使用 \\\" 虚拟类型 \\\" 代表 上述 两种类型 , 该 \\\" 通用函数 \\\" 就是 \\\" 函数模

    2024年02月19日
    浏览(37)
  • C++ sort()函数具体用法

    sort() 函数可以将一个容器或者数组的值进行排序,还可以自定义排序方式。 sort() 是基于头文件 algorithm 库下的一个函数,所以要调用 sort() ,就需要添加头文件。 一.正常排序 我们可以通过写 我们就可以将 arr 中从开始的元素到第5个元素按从小到大的顺序进行排序。 二.排序

    2024年02月06日
    浏览(42)
  • C++ freopen函数用法详解

    在OI里赛制中 如果没有文件操作或文件操作被注释,等待着你的就是 爆零 的命运。C和C++的文件操作,一般是用fopen或fstream,我们用 freopen ,即文件重定向。它的用法其实也挺简单。 参数: _Filename :要打开的文件名。 _Mode :打开方式,同fopen。 _File :一个FILE型指针,可以

    2024年02月06日
    浏览(61)
  • C++的rand()函数详细用法

    rand() 函数是C++标准库中的一个伪随机数生成器,它返回一个在0到 RAND_MAX 之间的整数,其中 RAND_MAX 是一个常量,通常定义为32767。由于 rand() 函数生成的随机数序列是固定的,因此在使用 rand() 函数之前,通常需要调用 srand() 函数初始化随机数种子。 srand() 函数接受一个无符号

    2024年02月15日
    浏览(60)
  • C++中memset函数的用法

    memset是 C++ 标准库中的一个函数,用于将内存块中的所有位都设置为指定的值。 它的原型如下: 这个函数接受三个参数: ptr  是指向要设置的内存区域的指针。 value  是要设置的值。这个值被转换为  unsigned char  类型,然后写入每个字节。 num  是要设置的字节数。 memset 函

    2024年02月07日
    浏览(39)
  • C++ Sleep函数详细介绍与用法

    这个函数就是让程序挂起一段时间,或者说是让程序暂停一段时间。 这个函数需要头文件: 如果是Linux的话则需要 如果是Windows的话则需要 用法: 就是在Sleep()中写上要暂停的毫秒数。 注意: Sleep()中的第一个字母S是大写。 并且1000毫秒=1秒 样例: 它们都用来进行线程控制

    2024年02月14日
    浏览(49)
  • 这个Set接口真牛逼

    偶然间看到 java.util 包下的 Set 接口,看着好搞笑哈哈哈哈哈哈哈 包括了如下几个方法: 创建包含0个元素的不可修改的Set集合 创建包含1个元素的不可修改的Set集合 创建包含2个元素的不可修改的Set集合 创建包含3个元素的不可修改的Set集合 创建包含4个元素的不可修改的Set集

    2024年02月06日
    浏览(38)
  • C++声明extern变量和extern函数的用法

    目录  一、 声明extern变量 1、 如何声明 2、在何处声明 3、在何处初始化 4、在何处调用 5、举例声明extern变量 (1)、声明extern变量的test.h文件 (2)、初始化extern变量的test.cpp文件 (3)、调用extern变量的main.cpp文件 二、声明extern函数 1、 如何声明 2、在何处声明 3、在何处定

    2024年02月15日
    浏览(42)
  • C++ system()函数的常用用法 (史上最详细)

    目录 一.推荐:     1. system(\\\"pause\\\")     2. system(\\\"color *\\\")     3.system(\\\"title *\\\")     4. system(\\\"cls\\\") 二.文件操作:     1. system(\\\"start *\\\")     2. system(\\\"del *\\\")     3. system(\\\"copy A B\\\")     4. system(\\\"move A B\\\") 三.系统操作     1. 关机,重启,睡眠     2. 日期/时间     3. task     1. system(\\\"pause\\\"

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包