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

简介: 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>usingnamespacestd;
#include<algorithm>#include<vector>intmain()
{
vector<int>a, b;
for (inti=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 (autod=a_b.begin(); d<set_intersection(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
    {
cout<<*d<<" ";
    }
cout<<endl;
return0;
}

image.png

set_union

求两个容器的并集,就是两个容器内所有元素集合在一起,但是重复元素只有一份,没有多份,所有对于并集,最特殊的情况就是两个容器内部没有重复元素,那需要给并集容器开辟的空间就是两个容器加起来

set_union(beg1,end1,beg2,end2,dest);


beg1是容器1的开始迭代器,end1是容器1的结束迭代器,beg2是容器2的开始迭代器,end2是容器2的结束迭代器,dest是目标容器的开始迭代器


使用:

#include<iostream>usingnamespacestd;
#include<algorithm>#include<vector>intmain()
{
vector<int>a, b;
for (inti=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 (autod=a_b.begin(); d<set_union(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
    {
cout<<*d<<" ";
    }
cout<<endl;
return0;
}

image.png

set_difference

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


set_difference(beg1,end1,beg2,end2,dest);


使用:


#include<iostream>usingnamespacestd;
#include<algorithm>#include<vector>intmain()
{
vector<int>a, b;
for (inti=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 (autod=a_b.begin(); d<set_difference(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
    {
cout<<*d<<" ";
    }
cout<<endl;
return0;
}


image.png

set_difference

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


set_difference(beg1,end1,beg2,end2,dest);


使用:


#include<iostream>usingnamespacestd;
#include<algorithm>#include<vector>intmain()
{
vector<int>a, b;
for (inti=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 (autod=a_b.begin(); d<set_difference(a.begin(), a.end(), b.begin(), b.end(), a_b.begin()); d++)
    {
cout<<*d<<" ";
    }
cout<<endl;
return0;
}


image.png

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

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


一点废话

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



🚀专栏:[C++爬塔日记](https://blog.csdn.net/weixin_72867798/category_12175393.html)

🙉都看到这里了,留下你们的👍点赞+⭐收藏+📋评论吧🙉

相关文章
|
2月前
|
算法
突击面试:解密面试官的算法题集合
突击面试:解密面试官的算法题集合
|
4月前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
77 10
|
3月前
|
算法 C++
STL算法大全
以上只是一部分STL算法的简单概述,每一个算法都有其特定的使用场景和规则,具体使用时需要参考相关文档或者教程进行深入理解和学习。
28 0
|
4月前
|
算法 Java
Java数据结构与算法:用于处理不相交集合的合并和查找问题
Java数据结构与算法:用于处理不相交集合的合并和查找问题
|
4月前
|
算法 搜索推荐 C++
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
C++之STL常用算法(遍历、查找、排序、拷贝、替换、算数生成、集合)
|
5月前
|
算法 C++
c++算法学习笔记 (21) STL
c++算法学习笔记 (21) STL
|
5月前
|
算法 C++ 容器
黑马c++ STL常用算法 笔记(6) 常用集合算法
黑马c++ STL常用算法 笔记(6) 常用集合算法
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。
|
1天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
1天前
|
算法 决策智能
基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数
该程序基于禁忌搜索算法求解车辆路径问题(VRP),使用MATLAB2022a版本实现,并带有GUI界面。用户可通过界面设置参数并查看结果。禁忌搜索算法通过迭代改进当前解,并利用记忆机制避免陷入局部最优。程序包含初始化、定义邻域结构、设置禁忌列表等步骤,最终输出最优路径和相关数据图表。