日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的

發布時間:2024/9/27 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想象現在服務器在向客戶端發送數據,每隔幾秒發送一次數據,客戶端需要將前后兩次的數據進行對比,找出相對于收的數據需要將上一次的數據刪除的部分,以及此次新增加的,還有原來就已經存在的數據。
代碼如下:

void getSameScreenGroupDatas() {for(int i = 0; i < screenGroupVec.size(); ++i){for(int j = 0; j < lastScreenGroupVec.size(); ++j){if(screenGroupVec[i].at(0).sid == lastScreenGroupVec[j].at(0).sid){getNewWinOriginalWin(screenGroupVec[i],lastScreenGroupVec[j]);getDelWinDatas(screenGroupVec[i],lastScreenGroupVec[j]);break;}}} }void getNewWinOriginalWin(winProList newDatas, winProList lastDatas) {for(int i = 0; i < newDatas.size(); ++i){for(int j = 0; j < lastDatas.size(); ++j){if(newDatas[i].wid == lastDatas[j].wid)//原來存在的窗口{updateDatas.insert(newDatas[i].sid,newDatas[i]);break;}if(j == lastDatas.size()-1){if(newDatas[i].wid != lastDatas[j].wid){//新增加的窗口addWinDatas.insert(newDatas[i].sid,newDatas[i]);}}}} }void getDelWinDatas(winProList newDatas, winProList lastDatas) {for(int i = 0; i < lastDatas.size(); ++i){for(int j = 0; j < newDatas.size(); ++j){if(newDatas[j].wid == lastDatas[i].wid){break;}if(j == newDatas.size()-1){if(newDatas[j].wid != lastDatas[i].wid){//需要刪除的窗口delWinDatas.insert(lastDatas[i].sid,lastDatas[i]);}}}} }

screenGroupVec為當前接收的,已經進行按照某一個結構體的字段歸類的list類型的vector,lastScreenGroupVec為上一次接收的按照結構體的某一字段歸類的list類型的vector.前后兩組數據對比,通過先找出字段值相同的一組list,然后對比這組list中結構體的值是新增的還是待刪除的,或者是原來存在的。
記錄思路。

總結

以上是生活随笔為你收集整理的前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。