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函数擦除从这个元素到最后元素的所有的元素。 }