生活随笔
收集整理的這篇文章主要介紹了
前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
想象現在服務器在向客戶端發送數據,每隔幾秒發送一次數據,客戶端需要將前后兩次的數據進行對比,找出相對于收的數據需要將上一次的數據刪除的部分,以及此次新增加的,還有原來就已經存在的數據。
代碼如下:
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中結構體的值是新增的還是待刪除的,或者是原來存在的。
記錄思路。
總結
以上是生活随笔為你收集整理的前后两组结构相同的数据进行比较,找出新增的,需要删除的,原来存在的的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。