您的位置:首页 > 科技 > IT业 > 海口网络公司_北京平台网站建设哪家好_最新资讯热点_n127网推广

海口网络公司_北京平台网站建设哪家好_最新资讯热点_n127网推广

2025/3/18 5:16:11 来源:https://blog.csdn.net/weixin_45925859/article/details/146294137  浏览:    关键词:海口网络公司_北京平台网站建设哪家好_最新资讯热点_n127网推广
海口网络公司_北京平台网站建设哪家好_最新资讯热点_n127网推广

目录

1.set_intersection //求交集,v1、v2所有相同元素

2.set_union //求并集,v1、v2所有相同及不同元素

3.set_difference //求差集,v1中除去与v2相同的元素


1.set_intersection //求交集,v1、v2所有相同元素

功能描述:

求两个容器的交集

函数原型:

// 求两个集合的交集
// beg1 容器1开始迭代器 end1 容器1结束迭代器 beg2 容器2开始迭代器  
// end2 容器2结束迭代器 dest 目标容器开始迭代器
// 注意:两个集合必须是有序序列//函数返回值:结果集合的结束位置迭代器
set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 

程序:

#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>//遍历打印
void printVector1(vector<int>&v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << "--- print  end ---" << endl;
}
//
void myPrint(int val)
{cout << val << " ";
}void test01()
{vector<int>v1;vector<int>v2;for (int i = 0; i < 10; i++){v1.push_back(i);   // 0 ~ 9v2.push_back(i + 5);  // 5 ~ 14}cout << " v1 数据: ";printVector1(v1);cout << " v2 数据: ";printVector1(v2);vector<int>vTarget;//目标容器需要提前开辟空间//最特殊情况 大容器包含小容器  开辟空间 取小容器的size即可vTarget.resize(min(v1.size(), v2.size()));//获取交集vector<int>::iterator itEnd = set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());//遍历,并打印cout << " v1和v2 交集(v1和v2都有的)数据: ";for_each(vTarget.begin(), itEnd, myPrint);cout << endl;
}int main() 
{test01();system("pause");return 0;
}

运行结果:

2.set_union //求并集,v1、v2所有相同及不同元素

功能描述:

求两个集合的并集

函数原型:

// 求两个集合的并集
// 注意:两个集合必须是有序序列// beg1 容器1开始迭代器  end1 容器1结束迭代器  beg2 容器2开始迭代器 
// end2 容器2结束迭代器  dest 目标容器开始迭代器
//函数返回值:结果集合的结束位置迭代器
set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 

程序:

#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>//遍历打印
void printVector1(vector<int>&v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << "--- print  end ---" << endl;
}void myPrint(int val)
{cout << val << " ";
}void test01()
{vector<int>v1;vector<int>v2;for (int i = 0; i < 10; i++){v1.push_back(i);v2.push_back(i + 5);}cout << " v1 数据: ";printVector1(v1);cout << " v2 数据: ";printVector1(v2);vector<int>vTarget;//目标容器提前开辟空间//最特殊情况 两个容器没有交集,并集就是两个容器size相加vTarget.resize(v1.size() + v2.size());vector<int>::iterator itEnd = set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());cout << " v1和v2 并集(v1、v2所有相同及不同元素)数据: ";for_each(vTarget.begin(), itEnd, myPrint);cout << endl;
}int main() 
{test01();system("pause");return 0;
}

运行结果:

3.set_difference //求差集,v1中除去与v2相同的元素

功能描述:

求两个集合的差集

函数原型:

// 求两个集合的差集
// 注意:两个集合必须是有序序列// beg1 容器1开始迭代器  end1 容器1结束迭代器  beg2 容器2开始迭代器 
// end2 容器2结束迭代器  dest 目标容器开始迭代器
//函数返回值:结果集合的结束位置迭代器
set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);

程序:

#include<iostream>
using namespace std;
#include <vector>
#include <algorithm>//遍历打印
void printVector1(vector<int>&v)
{for (vector<int>::iterator it = v.begin(); it != v.end(); it++){cout << *it << " ";}cout << "--- print  end ---" << endl;
}void myPrint(int val)
{cout << val << " ";
}//常用集合算法  set_difference 
void test01()
{vector<int>v1;vector<int>v2;for (int i = 0; i < 10; i++){v1.push_back(i);v2.push_back(i+5);}cout << " v1 数据: ";printVector1(v1);cout << " v2 数据: ";printVector1(v2);//创建目标容器vector<int>vTarget;//给目标容器开辟空间//最特殊情况  两个容器没有交集 取两个容器中大的size作为目标容器开辟空间vTarget.resize( max(v1.size(),v2.size()) );cout << "v1和v2的差集(v1除去与v2相同的元素)为:" << endl;vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint);//遍历打印cout << endl;cout << "v2和v1的差集(v2除去与v1相同的元素)为:" << endl;itEnd = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), vTarget.begin());for_each(vTarget.begin(), itEnd, myPrint);cout << endl;
}int main() 
{test01();system("pause");return 0;
}

运行结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com