全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++利用stl set_difference对车辆进出区域进行判定

核心代码

#include <iostream>  
#include <vector>  
#include <string>  
#include <algorithm>  
using namespace std;  
struct _AREA_VECTOR_STRUCT 
{ 
  int nAreaType;//区域类型 
  int nAreaID;//区域ID 
}; 
 
void CtestDlg::OnBnClickedButton2() 
{ 
  vector<_AREA_VECTOR_STRUCT> structAreaHistory;//车辆上一次所在区域 
  vector<_AREA_VECTOR_STRUCT> structAreaNow;//车辆本次所在区域 
  vector<_AREA_VECTOR_STRUCT> OutStructAreaVector;//输出区域 
 
  _AREA_VECTOR_STRUCT structVehicle; 
 
  //模拟上一次车辆所在的区域集合 
  structVehicle.nAreaType = 2; 
  structVehicle.nAreaID = 0x45; 
  structAreaHistory.push_back(structVehicle); 
  structVehicle.nAreaID = 0x7A; 
  structAreaHistory.push_back(structVehicle); 
  structVehicle.nAreaID = 0x88; 
  structAreaHistory.push_back(structVehicle); 
 
  structVehicle.nAreaType = 3; 
  structVehicle.nAreaID = 0x55; 
  structAreaHistory.push_back(structVehicle); 
  structVehicle.nAreaID = 0x88; 
  structAreaHistory.push_back(structVehicle); 
 
  //模拟本次车辆所在的区域集合 
  structVehicle.nAreaType = 2; 
  structVehicle.nAreaID = 0x88; 
  structAreaNow.push_back(structVehicle); 
  structVehicle.nAreaID = 0x45; 
  structAreaNow.push_back(structVehicle); 
  structVehicle.nAreaID = 0x11; 
  structAreaNow.push_back(structVehicle); 
 
  structVehicle.nAreaType = 3; 
  structVehicle.nAreaID = 0x55; 
  structAreaNow.push_back(structVehicle); 
 
  //排序,先按区域类型排序,再按区域ID排序 
  sort(structAreaHistory.begin(), structAreaHistory.end(),[] (_AREA_VECTOR_STRUCT structArea1, _AREA_VECTOR_STRUCT structArea2)->bool 
  { 
    if(structArea1.nAreaType != structArea2.nAreaType) 
      return structArea1.nAreaType < structArea2.nAreaType; 
    else 
      return structArea1.nAreaID < structArea2.nAreaID; 
  }); 
  sort(structAreaNow.begin(), structAreaNow.end(),[] (_AREA_VECTOR_STRUCT structArea1, _AREA_VECTOR_STRUCT structArea2)->bool 
  { 
    if(structArea1.nAreaType != structArea2.nAreaType) 
      return structArea1.nAreaType < structArea2.nAreaType; 
    else 
      return structArea1.nAreaID < structArea2.nAreaID; 
  }); 
 
  int a = 0; 
 
  //求差,结果为离开区域的集合(出区域) 
  set_difference(structAreaHistory.begin(), structAreaHistory.end(), structAreaNow.begin(), structAreaNow.end(), back_inserter(OutStructAreaVector), 
    [](_AREA_VECTOR_STRUCT structArea1, _AREA_VECTOR_STRUCT structArea2)->bool 
  { 
    if(structArea1.nAreaType != structArea2.nAreaType) 
      return structArea1.nAreaType < structArea2.nAreaType; 
    else 
      return structArea1.nAreaID < structArea2.nAreaID; 
  }); 
 
  if(OutStructAreaVector.size() != 0) 
  { 
    TRACE("出"); 
  } 
 
  OutStructAreaVector.clear();//先清空 
 
  //反过来求差,结果为新进入的区域集合(新进区域) 
  set_difference(structAreaNow.begin(), structAreaNow.end(), structAreaHistory.begin(), structAreaHistory.end(), back_inserter(OutStructAreaVector), 
    [](_AREA_VECTOR_STRUCT structArea1, _AREA_VECTOR_STRUCT structArea2)->bool 
  { 
    if(structArea1.nAreaType != structArea2.nAreaType) 
      return structArea1.nAreaType < structArea2.nAreaType; 
    else 
      return structArea1.nAreaID < structArea2.nAreaID; 
   
  }); 
 
  if(OutStructAreaVector.size() != 0) 
  { 
    TRACE("重新进"); 
  } 
} 


# stl  # set_difference  # C++ STL入门教程(7) multimap、multiset的使用  # c++ STL set_difference set_intersection set_union   # c++ STL库容器之集合set代码实例  # 新进  # 再按  # 清空  # struct  # _AREA_VECTOR_STRUCT  # std  # int  # namespace  # ID  # void  # nAreaID  # CtestDlg  # nAreaType  # algorithm  # cpp  # include  # brush  # pre  # class  # vector 


相关文章: 如何用狗爹虚拟主机快速搭建网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  如何快速生成ASP一键建站模板并优化安全性?  如何快速重置建站主机并恢复默认配置?  如何快速生成高效建站系统源代码?  建站之星免费版是否永久可用?  宝塔Windows建站如何避免显示默认IIS页面?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  ,网页ppt怎么弄成自己的ppt?  定制建站价位费用解析与套餐推荐全攻略  免费网站制作appp,免费制作app哪个平台好?  如何通过.red域名打造高辨识度品牌网站?  *服务器网站为何频现安全漏洞?  如何用IIS7快速搭建并优化网站站点?  建站之星会员如何解锁更多建站功能?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何在宝塔面板创建新站点?  如何在Windows服务器上快速搭建网站?  如何在橙子建站上传落地页?操作指南详解  如何在阿里云香港服务器快速搭建网站?  内网网站制作软件,内网的网站如何发布到外网?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  如何在阿里云ECS服务器部署织梦CMS网站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  Python路径拼接规范_跨平台处理说明【指导】  个人摄影网站制作流程,摄影爱好者都去什么网站?  如何快速生成可下载的建站源码工具?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  在线制作视频的网站有哪些,电脑如何制作视频短片?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  制作公司内部网站有哪些,内网如何建网站?  建站之星后台管理如何实现高效配置?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  七夕网站制作视频,七夕大促活动怎么报名?  北京企业网站设计制作公司,北京铁路集团官方网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何快速启动建站代理加盟业务?  如何设置并定期更换建站之星安全管理员密码?  自助网站制作软件,个人如何自助建网站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  高端网站建设与定制开发一站式解决方案 中企动力  青浦网站制作公司有哪些,苹果官网发货地是哪里?  微信h5制作网站有哪些,免费微信H5页面制作工具?  独立制作一个网站多少钱,建立网站需要花多少钱?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何通过NAT技术实现内网高效建站?  如何在新浪SAE免费搭建个人博客? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。