全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站主机选购指南:核心配置与性价比推荐解析  如何配置WinSCP新建站点的密钥验证步骤?  如何选择美橙互联多站合一建站方案?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  如何获取PHP WAP自助建站系统源码?  如何在阿里云虚拟主机上快速搭建个人网站?  网站按钮制作软件,如何实现网页中按钮的自动点击?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  浅析上传头像示例及其注意事项  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何在宝塔面板创建新站点?  建站之星后台管理如何实现高效配置?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  已有域名如何免费搭建网站?  如何在宝塔面板中修改默认建站目录?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何确保FTP站点访问权限与数据传输安全?  ,制作一个手机app网站要多少钱?  建站之星如何开启自定义404页面避免用户流失?  名字制作网站免费,所有小说网站的名字?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  简单实现Android文件上传  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何选择服务器才能高效搭建专属网站?  广德云建站网站建设方案与建站流程优化指南  山东云建站价格为何差异显著?  海南网站制作公司有哪些,海口网是哪家的?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在香港服务器上快速搭建免备案网站?  建站主机核心功能解析:服务器选择与网站搭建流程指南  如何实现建站之星域名转发设置?  python的本地网站制作,如何创建本地站点?  如何挑选优质建站一级代理提升网站排名?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  ppt制作免费网站有哪些,ppt模板免费下载网站?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何构建满足综合性能需求的优质建站方案?  如何通过FTP空间快速搭建安全高效网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何快速生成橙子建站落地页链接?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  ,如何利用word制作宣传手册?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何获取免费开源的自助建站系统源码?  建站主机CVM配置优化、SEO策略与性能提升指南  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台? 

您的项目需求

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