我有一个类,构造函数看起来像这样:
myclass(int=0,string="",int=0,string="",int=0,int=0,
int=0,int=0,string="",int=0,int=0);
以及包含此类元素的向量
vector<myclass>myvect;
向量已排序,我正在尝试删除重复项 这不起作用:
std::vector<myclass>::iterator it;
it=std::unique (myvect.begin(), myvect.end());
myvect.resize(std::distance(myvect.begin(),it) );
我收到此错误
:algorithm(1862): error C2678: binary '==' :
no operator found which takes a left-hand operand
of type 'myclass' (or there is no acceptable conversion)
任何想法为什么? 有什么方法可以从这个向量中删除重复项吗?
答案 0 :(得分:3)
std::unique
算法需要知道如何比较两个myclass
对象的相等性。有两种方法可以做到这一点。第一个是实施myclass::operator==
。第二种是将二元谓词传递给std::unique
:
std::unique (myvect.begin(), myvect.end(),
[](const myclass& a, const myclass& b) {
return /* some expression to test equality */;
});
答案 1 :(得分:1)
您可能没有实施myclass::operator==
。
答案 2 :(得分:1)