[英]C++ how to remove duplicates from vector of Class type?
我有一個類,構造函數如下所示:
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)
知道為什么嗎? 有什么辦法可以從此向量中刪除重復項?
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 */;
});
您可能沒有實現myclass::operator==
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.