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


使用set_intersection和set_difference前需排序两vector,分别求交集与差集,结果存入预分配或通过back_inserter动态扩展的容器中。

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

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

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

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

示例代码:

标贝悦读AI配音 标贝悦读AI配音

在线文字转语音软件-专业的配音网站

标贝悦读AI配音 66 查看详情 标贝悦读AI配音 #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交集与差集计算方法的详细内容,更多请关注其它相关文章!


# 复用  # 全网营销推广公司价格  # 有没有建设网站服务  # 终身免费网站建设  # 微信营销与企业品牌推广属于什么  # 忻州网站建设案例  # 网站建设技术和销售工资  # 优化网站备案有什么用处  # 常州优质网站建设  # 千岛湖优化网站价格  # 建设网站怎么设置页脚  # 相关文章  # 第一个  # go  # 多路  # 管理机制  # 如何实现  # 何为  # 何求  # 计算方法  # 都是  # 标准库  # stream  # ios  # c++  # ai 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 《i莞家》修改昵称方法  微信注销后银行卡解绑了吗_微信注销后银行卡解绑状态  C++ optional用法详解_C++17处理可能为空的返回值  《淘宝联盟》推广自己的店铺方法  Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法  抖音小程序怎么开通?小程序开通条件是什么?  mysql如何管理数据库账户_mysql数据库账户管理技巧  Yandex世界探索 最新官方免登录入口全知道  海外搜索引擎推广效果怎么样,怎么分析效果!  《暗黑破坏神4》国服回归送狂欢礼包 价值6916元  Lar*el Eloquent中通过Join查询关联数据表:解决多行子查询问题  todesk如何添加信任设备_todesk信任设备设置教程  《知到》打卡课程方法  如何在 WordPress 前端实现内容提交:古腾堡编辑器的替代方案与实践  《伊瑟》凶影追缉库卢鲁boss攻略  如何在vscode中关闭it环境  漫蛙漫画官方网站使用_漫蛙manwa网页版在线入口教程  b站怎么查看视频的码率_b站视频码率查看方法  《花瓣》创建专辑方法  oppo手机如何通过下拉通知栏截图_oppo手机通知栏快捷截图方法  小红书如何引流到私信?引流到私信有用吗?  Google Drive API服务器端访问指南:服务账户认证详解  使用逻辑应用(Logic Apps)自动处理邮件附件中的XML到Excel  聚水潭ERP后台管理系统登录 聚水潭ERP官方登录通道  盲鳗善于分泌黏液猜猜主要用来做什么  《飞猪旅行》购买汽车票方法  wps文字怎么设置文字环绕图片的方式_wps文字如何设置文字环绕图片方式  《幻兽帕鲁》手游帕鲁捕捉技巧分享  掌握产品代码正则表达式:避免常见陷阱与精确匹配  AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案  小红书网页版怎么进 小红书网页版通用入口  C++如何实现单例模式_C++线程安全的单例模式写法  如何解决Casbin日志与应用日志不统一的问题,使用casbin/psr3-bridge实现无缝集成  优化CSS动画与J*aScript定时器协同:构建稳定Toast提示  电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】  快递物流路径揭秘  CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化  一点万象签到领积分指南  VS Code的时间线(Timeline)视图:您的代码时光机  哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  在Django单元测试中优雅处理信号:基于环境的条件执行策略  《大学搜题酱》官网地址登录  精通VS Code多光标编辑以实现闪电般快速的修改  MacBook Pro词典使用指南  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  AO3官方镜像链接 | 最新防走失网址永久收藏  构建可配置的J*aScript加权点击计数器与共享总计功能  抖音号升级企业号怎么改名字?升级企业号有哪些好处?  如何在CSS中设置背景图像:一个全面指南 

 2025-11-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.