c++常用集合算法

算法简介:
set_intersection // 求两个容器的交集
set_union // 求两个容器的并集
set_difference // 求两个容器的差集

set_intersection
功能描述:
求两个容器的交集
函数原型:
set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
// 求两个集合的交集
// 注意:两个集合必须是有序序列
// beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 //
dest 目标容器开始迭代器

v3.resize(min(v1.size(),v2.size()));
  vector<int>::iterator ending = set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());
  for_each(v3.begin(),ending,pri);

set_union
功能描述:
求两个集合的并集
函数原型:
set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
// 求两个集合的并集
// 注意:两个集合必须是有序序列
// beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 //
dest 目标容器开始迭代器

  v3.resize(v1.size()+v2.size());
  vector<int>::iterator ending = set_union(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());
  for_each(v3.begin(),ending,pri);

set_difference

功能描述:
求两个集合的差集
函数原型:
set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
// 求两个集合的差集
// 注意:两个集合必须是有序序列
// beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 //
dest 目标容器开始迭代器

具体求解的是容器1中容器2没有的部分,容器2中容器1没有的部分不包括在内

  v3.resize(max(v1.size(),v2.size()));
  vector<int>::iterator ending1 = set_difference(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());
  for_each(v3.begin(),ending1,pri);
  vector<int>::iterator ending2 = set_difference(v2.begin(),v2.end(),v1.begin(),v1.end(),v3.begin());
  for_each(v3.begin(),ending2,pri);  
posted @   纸包鱼  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
点击右上角即可分享
微信分享提示