中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++利用stl set_difference對車輛進出區域進行判定

發布時間:2020-09-29 02:57:53 來源:腳本之家 閱讀:206 作者:Leckun 欄目:編程語言

核心代碼

#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("重新進"); 
  } 
} 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

读书| 横峰县| 旺苍县| 依兰县| 岳西县| 那曲县| 洛南县| 通化市| 鸡东县| 博湖县| 策勒县| 澄江县| 那曲县| 长阳| 凯里市| 娄底市| 涟水县| 云南省| 普陀区| 九龙坡区| 湖南省| 泾源县| 灵山县| 和硕县| 林口县| 长宁区| 青田县| 横峰县| 苏尼特右旗| 西峡县| 芜湖市| 黎城县| 巴彦淖尔市| 信阳市| 襄汾县| 沿河| 自治县| 客服| 靖边县| 临沂市| 汽车|