新闻中心

c++如何求两个vector的交集和差集 _c++ vector交集与差集计算方法

2025-11-13
浏览次数:
返回列表
使用set_intersection和set_difference前需排序两vector,分别求交集与差集,结果存入预分配或通过back_inserter动态扩展的容器中。

c++如何求两个vector的交集和差集 _c++ vector交集与差集计算方法

在C++中,求两个vector的交集和差集可以通过标准库中的算法函数实现,前提是这两个vector已经排序。主要使用<algorithm></algorithm>头文件中的set_intersectionset_difference函数。

1. 求两个vector的交集(set_intersection)

要计算两个vector的交集,需先对两个vector进行排序,然后使用set_intersection将结果写入目标容器。

示例代码:

Perplexity Perplexity

Perplexity是一个ChatGPT和谷歌结合的超级工具,可以让你在浏览互联网时提出问题或获得即时摘要

Perplexity 302 查看详情 Perplexity #include iostream>
#include
#include gorithm>
using namespace std;

int main() {
    vector v1 = {1, 2, 5, 6};
    vector v2 = {2, 3, 4, 5};
    vector v_intersection;

    // 必须先排序
    sort(v1.begin(), v1.end());
    sort(v2.begin(), v2.end());

    // 预分配空间
    v_intersection.resize(min(v1.size(), v2.size()));

    auto it = set_intersection(
        v1.begin(), v1.end(),
        v2.begin(), v2.end(),
        v_intersection.begin()
    );

    // 调整大小以去除未使用的部分
    v_intersection.erase(it, v_intersection.end());

    cout     for (int n : v_intersection) cout     cout
    return 0;
}

输出:
交集: 2 5

2. 求两个vector的差集(set_difference)

差集表示在第一个vector中但不在第二个vector中的元素。同样需要排序,并使用set_difference函数。

示例代码:

// 接上面的v1, v2

vector v_diff;
v_diff.resize(max(v1.size(), v2.size())); // 安全起见分配最大长度

auto it_diff = set_difference(
    v1.begin(), v1.end(),
    v2.begin(), v2.end(),
    v_diff.begin()
);

v_diff.erase(it_diff, v_diff.end());

cout for (int n : v_diff) cout cout

输出:
v1 - v2 的差集: 1 6

3. 注意事项与技巧

使用这些函数时要注意以下几点:

  • 输入的vector必须是有序的,否则结果不正确
  • 目标vector需要预先分配足够空间,或使用back_inserter避免手动调整大小
  • 若不想修改原vector,可创建副本再排序
  • 对于自定义类型,需提供比较函数或重载

使用back_inserter简化操作:

vector result;
set_intersection(v1.begin(), v1.end(),
             v2.begin(), v2.end(),
             back_inserter(result));
// 无需resize,自动插入

基本上就这些。只要记得排序和空间处理,用STL算交集和差集很高效。

以上就是c++++如何求两个vector的交集和差集 _c++ vector交集与差集计算方法的详细内容,更多请关注其它相关文章!


# 复用  # 黄浦seo优化排名  # seo优化好还是竞价好  # 肇庆网络营销网站优化  # 株洲标准营销型网站优化  # 评价网站优化效果  # 学院网站建设意义  # 大连企业seo优化推广方案  # 展会营销推广方式有  # seo无聊影视  # 微博显示营销推广咋回事  # 互联网  # 是一个  # go  # 多路  # 管理机制  # 如何实现  # 何为  # 何求  # 计算方法  # 都是  # 标准库  # stream  # ios  # c++  # ai 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 使用 Pandas 高效处理 .dat 文件:字符清理与数据计算  steam官方入口大全 steam账号注册及操作指南  将JSON对象数组转置为键值对列表的实用指南  小红书网页版入口链接分享 小红书官网直接进  怎么在浏览器上运行HTML文件_浏览器运行HTML文件技巧【技巧】  ArrayList与LinkedList操作复杂度详解:遍历与修改  抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩  C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言  菜鸟取件码是什么怎么查 最全查询渠道汇总  mysql备份恢复性能优化_mysql备份恢复性能优化方法  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  漫蛙漫画网页端入口 漫蛙2官方正版漫画站点  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  Node.js中HTML按钮与J*aScript函数交互的正确姿势  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  使用Python高效删除Word宏并转换DOCM为DOCX格式  cad如何更改注释性对象的比例_cad注释性比例调整方法  fishbowl官网免费版 fishbowl养鱼网站入口  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  AO3最新镜像入口 Archive of Our Own官方平台访问  怎样使用“本地安全策略”提升Windows安全性_Secpol.msc配置指南【高手】  深入理解Promise链:如何在catch后中断then的执行  mcjs网页版在线存档 mcjs云存档登录入口  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  微信群消息显示延迟如何解决 微信群消息刷新优化方法  海棠账号登录入口_登录海棠账户同步阅读记录  批改网学生版PC登录 批改网官网登录系统入口  b站如何看历史记录_b站观看历史找回方法  C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果  如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率  Go语言中对Map值调用带指针接收者方法:原理与最佳实践  J*aScript对象创建方式_J*aScript设计模式应用  QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|  天眼查企业查询官网入口 天眼查官方网页版查询  从J*aScript对象中精确提取指定属性的教程  taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】  微博网页版主页入口 微博官方网站免登录访问  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  微信语音通话掉线如何解决 微信语音通话稳定优化方法  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  绝地鸭卫平a核爆刀流玩法攻略  “在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  outlook中文官网入口地址 outlook官方中文版直达首页链接  利用5118提升短视频内容效果_5118短视频关键词优化方法 

搜索