我只想将myData对象存储在一组中。需要根据重载的运算符对对象进行排序
struct myData
{
int value;
myData(int value)
{
this->value=value;
}
bool operator<(myData b)
{
return this->value < b.value;
}
};
int main()
{
set<myData> s;
s.insert(myData(10));
s.insert(myData(50));
s.insert(myData(40));
s.insert(myData(30));
s.insert(myData(20));
print_set(s);
}
我知道我可以将自定义比较器创建为函数对象。
struct comp
{
bool operator()(const myData &lhs, const myData &rhs) const{
return lhs.value<rhs.value;
}
};
并将其用作:
set<myData,comp> s;
但是运算符重载呢?我在这里做错什么了吗?
添加const关系运算符应该可以解决该问题。另外,我建议向您的班级添加copy ctor。
我在这里提供示例:
struct myData
{
int value;
myData(int value) : value(value) { }
myData(const myData &b) : value(b.value) { }
~myData(void) { }
bool operator<(const myData &b) const { return (value < b.value); }
};