重载:重新定义排序方法
class AttributeData
{
// class members
public:
string Title;
string StringValue;
//方放重载以StringValue排序
bool operator<(const AttributeData& rhs) { return (*this).StringValue < rhs.StringValue; };
bool operator>(const AttributeData& rhs) { return (*this).StringValue > rhs.StringValue; };
bool operator==(const AttributeData& rhs) { return (*this).StringValue == rhs.StringValue; }
};
排序去重
vector <AttributeData>::iterator it;
sort(AttributeDatas.begin(), AttributeDatas.end());
it = unique(AttributeDatas.begin(), AttributeDatas.end()); //”删除”序列中所有相邻的重复元素(只保留一个)。
//此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了
//unique的返回值是重复元素的第一项
AttributeDatas.erase(it, AttributeDatas.end()); //删除左闭右开的区间内的东西
不排序去重
unordered_set<AttributeData> s(begin(AttributeDatas), end(AttributeDatas));
AttributeDatas = vector<AttributeData>(begin(s), end(s));