第九层(16):STL终章——常用集合算法

这篇具有很好参考价值的文章主要介绍了第九层(16):STL终章——常用集合算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎉welcome🎉
✒️博主介绍:一名大一的智能制造专业学生,在学习C/C++的路上会越走越远,后面不定期更新有关C/C++语法,数据结构,算法,Linux,ue5使用,制作游戏的心得,和大家一起共同成长。
✈️C++专栏:C++爬塔日记
😘博客制作不易,👍点赞+⭐收藏+➕关注

前情回顾

在上一块石碑中,我学到了,同时下一块石碑也显露出来…

  • 🚄上章地址:第九章(15):STL之常用算术生成算法

常用集合算法

  • 常用集合算法是用于得出两个容器的交集并集和差集的,有三个:
set_intersection//求两个容器的交集
set_union//求两个容器的并集
set_difference//求两个容器的差集

set_intersection

  • 求两个容器的交集,交集就是两个元素重复的部分,它会返回的是一个迭代器,就是存放这个交集的容器中的最后一个元素的迭代器,对于存放交集的容器时需要去提前开辟好空间的,最特殊的情况就是一个容器是另一个容器的子集,那对于存放交集的容器最大空间就是两个容器中小的那个,可以利用min函数来判断谁大谁小
min(size1,size2);
  • 使用min需要引头文件:algorithm
set_intersection(beg1,end1,beg2,end2,dest);
  • beg1是容器1的开始迭代器,end1是容器1的结束迭代器,beg2是容器2的开始迭代器,end2是容器2的结束迭代器,dest是目标容器的开始迭代器

使用:

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>

int main()
{
	vector<int> a, b;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
		b.push_back(i + 3);
	}
	vector<int> a_b;
	a_b.resize(min(a.size(), b.size()));
	cout << "a和b的交集是:";
	for (auto d = a_b.begin(); d < set_intersection(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
	{
		cout << *d << " ";
	}
	cout << endl;
	return 0;
}

第九层(16):STL终章——常用集合算法,C++爬塔日记,c++,算法,开发语言

set_union

  • 求两个容器的并集,就是两个容器内所有元素集合在一起,但是重复元素只有一份,没有多份,所有对于并集,最特殊的情况就是两个容器内部没有重复元素,那需要给并集容器开辟的空间就是两个容器加起来
set_union(beg1,end1,beg2,end2,dest);
  • beg1是容器1的开始迭代器,end1是容器1的结束迭代器,beg2是容器2的开始迭代器,end2是容器2的结束迭代器,dest是目标容器的开始迭代器

使用:

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>

int main()
{
	vector<int> a, b;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
		b.push_back(i + 3);
	}
	vector<int> a_b;
	a_b.resize(a.size()+b.size());
	cout << "a和b的并集是:";
	for (auto d = a_b.begin(); d < set_union(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
	{
		cout << *d << " ";
	}
	cout << endl;
	return 0;
}

第九层(16):STL终章——常用集合算法,C++爬塔日记,c++,算法,开发语言

set_difference

  • 两个容器的差集,差集的意思是,容器1中有,容器2中没有,对于差集而言,最特殊的情况为,两者之间没有共同元素,那差集就是较大的元素个数就是大容器的大小,可以用max得出,用于与min相同
set_difference(beg1,end1,beg2,end2,dest);

使用:

#include<iostream>
using namespace std;
#include<algorithm>
#include<vector>

int main()
{
	vector<int> a, b;
	for (int i = 0; i < 10; i++)
	{
		a.push_back(i);
		b.push_back(i + 3);
	}
	vector<int> a_b;
	a_b.resize(max(a.size(), b.size()));
	cout << "a和b的差集集是:";
	for (auto d = a_b.begin(); d < set_difference(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
	{
		cout << *d << " ";
	}
	cout << endl;
	return 0;
}

第九层(16):STL终章——常用集合算法,C++爬塔日记,c++,算法,开发语言

最后一座石碑倒下,爬塔结束

  • “轰”,面前的石碑轰然倒下了,露出了一片广袤的天地,和一方莲台,莲台上坐着的是一位老者,老者浑身都透露出来自C++的强大波动,在石碑中感受不到的力量,那个老者看到我露出了笑容:“我就知道你可以来到这里,孩子,这座塔只是告诉你怎么去使用的,像熟练的使用C++的力量,还需要你坚持不懈的去熟悉他,使用它,加油吧,未来的路还很长,我期待你未来的成长…"

一点废话

  • hi,相信看文章的各位小伙伴对我已经不是很陌生了,这是我第一个真正意义上付出心血的专栏文章,虽然对于后面对STL进行介绍讲解的时候文章的质量并不是很好,我只是将使用描述了出来,并没有进行深度的剖析,对于这点我深表歉意,虽然但是,对于前面面向对象的内容我还是很有自信的,虽然介绍还是很浅薄,但是希望可以对于正在阅读文章的你有所帮助,C++爬塔日记这个专栏正式结束,下一个专栏我会为大家带来一个会进行长期更新的专栏——单片机的专栏,并且算法专栏也会在不久之后和大家见面了,浅浅期待一下吧!最后的最后,谢谢各位读者能看到这里,万分感谢!

🚀专栏:C++爬塔日记
🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉文章来源地址https://www.toymoban.com/news/detail-782311.html

到了这里,关于第九层(16):STL终章——常用集合算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • STL- 常用算法

    概述 : 算法主要是由头文件 algorithm functional numeric 组成。 algorithm 是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 numeric 体积很小,只包括几个在序列上面进行简单数学运算的模板函数 functional 定义了一些模板类,用以声明函数对象。

    2024年02月09日
    浏览(28)
  • STL中的常用算法详解

    STL的算法主要是由下面的头文件组成的。 1.algorithm是所有STL头文件中最大的一个范围涉及到比较、交换、查找、遍历操作、复制、修改等等算法的头文件。 2.numeric体积很小,只包括几个再序列上面进行简单数学运算的模板函数。 3.functional定义了一些模板类,用以声明函数对

    2024年02月15日
    浏览(27)
  • 【C语言进阶日记】算法篇① 深入了解常用十二种滤波算法:原理、示例与应用

    提示:滤波算法在信号处理和图像处理领域中广泛应用,可以用于去噪、平滑、增强和分析信号。本文将深入介绍滤波算法的原理和常见的应用,帮助读者更好地理解和使用滤波算法。 滤波算法是一种数学技术,用于处理信号的频谱特性。通过对信号的时域或频域进行变换、

    2024年02月05日
    浏览(32)
  • 算法修炼之练气篇——练气十九层

    博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会

    2024年02月05日
    浏览(64)
  • 【数据结构与算法】C++的STL模板(迭代器iterator、容器vector、队列queue、集合set、映射map)以及算法例题

    更多算法例题链接: 【数据结构与算法】递推法和递归法解题(递归递推算法典型例题) 什么是迭代器(iterator) 迭代器(iterator)的定义: 迭代器是一种检查容器内元素并遍历元素的数据类型。 迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。 容器

    2024年04月14日
    浏览(37)
  • C++系列二:STL教程-常用算法

    提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 还有一些我在尝试中迷惑不解的,有点玄幻。 排序算法: 合并算法: 查找算法: 筛选分组算法: 其他:

    2024年02月13日
    浏览(35)
  • Day 31 C++ STL常用算法(下)

    copy——容器内指定范围的元素拷贝到另一容器中 函数原型 copy(iterator beg, iterator end, iterator dest); // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置 // beg 开始迭代器 // end 结束迭代器 // dest 目标起始迭代器 注意——利用copy算法在拷贝时,目标容器要提前

    2024年02月12日
    浏览(31)
  • 「Java」《Java集合框架详解:掌握常用集合类,提升开发效率》

    Java 集合框架是 Java 编程中不可或缺的一部分。它提供了一组强大的数据结构和算法,用于存储、操作和处理对象数据。本文将深入探讨 Java 集合框架的核心概念,介绍常用的集合接口和实现类,并提供实际应用示例,帮助读者更好地理解和应用集合框架,提升开发效率。

    2024年02月11日
    浏览(36)
  • 大数据开发中常用组件服务的集群管理脚本整理集合

    bash的运行模式可分为 login shell (用户名、密码登录)和 non-login shell (SSH登录)。 两者登录方式加载情况: 1. login shell 启动时会加载: /etc/profile,~/.bash_profile,~/.bashrc 2. non-login shell 启动时会加载: ~/.bashrc 注意: ~/.bashrc 实则会加载 /etc/bashrc , /etc/bashrc 又加载 /etc/profile.d/*.sh

    2024年02月07日
    浏览(31)
  • 【C++】STL 算法 ⑦ ( 二元谓词使用场景 - 大小写不敏感 set 集合 | tolower 函数 - 将字符转为小写字母 | 基于 tolower 实现大小写不敏感的比较函数对象 )

    本篇博客中 , 实现一个 set 集合 , 存放 英文字母 组成的字符串 , 且 大小写不敏感 ; 实现的方法 : 自定义字符串 对比排序规则 , 先 将 字符串 都转为小写字母 , 然后进行对比 ; tolower 函数是 C / C++ 标准库 中的函数 , 其作用是 将 字符从 大写形式 转换为 小写形式 , 该函数定义

    2024年02月02日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包