set_union对vector结构体进行去除重复值并合并
#include<algorithm> using namespace std; vector<testStruct>testStructVector1; vector<testStruct>testStructVector2; vector<testStruct>unionVector; void CtestDlg::OnBnClickedButton2() { testStruct struct1; for(int i = 0; i < 5; i++) { struct1.a = i; struct1.b = i + i; testStructVector1.push_back(struct1); } testStruct struct2; for(int i = 3; i < 8; i++) { struct2.a = i; struct2.b = i + i; testStructVector2.push_back(struct2); } auto itrUnion = set_union(testStructVector1.begin(), testStructVector1.end(), testStructVector2.begin(), testStructVector2.end(), back_inserter(unionVector), [] (testStruct struct1, testStruct struct2) { return struct1.b < struct2.b; }); }
运行结果:
testStructVector1.b = 0,2,4,6,8
testStructVector2.b = 6,8,10,12,14
合并去重后unionVector.b = 0,2,4,6,8,10,12,14