这篇文章主要介绍了set_difference,用于求两个集合的差集,结果集合中包含所有属于第一个集合但不属于第二个集合的元素,需要的朋友可以参考下
核心代码
#include #include #include #include using namespace std; struct _AREA_VECTOR_STRUCT { int nAreaType;//区域类型 int nAreaID;//区域ID }; void CtestDlg::OnBnClickedButton2() { vector structAreaHistory;//车辆上一次所在区域 vector structAreaNow;//车辆本次所在区域 vector 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 bool { if(structArea1.nAreaType != structArea2.nAreaType) return structArea1.nAreaType <structArea2.nAreaType; else return structArea1.nAreaID bool { if(structArea1.nAreaType != structAr<span style="color:transparent">来源gaodai#ma#com搞*!代#%^码$网</span>ea2.nAreaType) return structArea1.nAreaType <structArea2.nAreaType; else return structArea1.nAreaID bool { if(structArea1.nAreaType != structArea2.nAreaType) return structArea1.nAreaType <structArea2.nAreaType; else return structArea1.nAreaID <structArea2.nAreaID; }); if(OutStructAreaVector.size() != 0) { TRACE("重新进"); } }
以上就是c++利用stl set_difference对车辆进出区域进行判定的详细内容,更多请关注gaodaima搞代码网其它相关文章!