struct SIndexData { string sCode; int iDate; int iTime; double f1; SIndexData(): iDate(0), iTime(0) { } bool operator == (const SIndexData & obj) const //重載 == 操作符 { return sCode == obj.sCode && iDate == obj.iDate && iTime == obj.iTime; } bool operator < (const SIndexData & obj) const //重載 < 操作符 { return sCode == obj.sCode && iDate == obj.iDate && iTime < obj.iTime; } }; struct SIndex { vector<SIndexData> vData; }; int main() { SIndex sIndex; SIndexData sIndexData; sIndexData.sCode = "000001"; sIndexData.iDate = 20171025; sIndexData.iTime = 94000; sIndexData.f1 = 7.5; sIndex.vData.push_back(sIndexData); SIndexData sIndexData1; sIndexData1.sCode = "000001"; sIndexData1.iDate = 20171025; sIndexData1.iTime = 94000; sIndexData1.f1 = 7.8; sIndex.vData.push_back(sIndexData1); sort(sIndex.vData.begin(), sIndex.vData.end()); //使用sort()進行排序,排序后的相同元素集中出現 sIndex.vData.erase(unique(sIndex.vData.begin(), sIndex.vData.end()), sIndex.vData.end()); //unique()函數將重復的元素放到vector的尾部 然后返回指向第一個重復元素的迭代器 再用erase函數擦除從這個元素到最后元素的所有的元素。 }