【发布时间】:2014-06-13 09:19:21
【问题描述】:
编辑,更新:很好的答案谢谢大家。我已经为 removeDup(vector<Graph::Vertex>&); 函数中。
我有一个需要从中删除重复项的对象向量,但我收到一个我不熟悉的错误(错误如下)。这是一个非常简单的对象,公开包含在一个名为 Graph 的类中:
struct Vertex
{
string name;
int num;
public:
Vertex();
Vertex(string, int);
void printVertex();
};
我已经阅读了一些关于此的主题 (This one in particular) 但是当我尝试使用 unique 对向量进行排序时,我遇到了一个非常奇怪的错误。
我使用push_back添加到向量:
vector<Graph::Vertex> v;
Graph::Vertex first(string1, count);
v.push_back(first);
并尝试使用我在另一个线程中找到的这段代码进行排序:
void removeDup(vector<Graph::Vertex> v)
{
sort( v.begin(), v.end());
v.erase( unique( v.begin(), v.end() ), v.end() );
}
但是,当我使用这个功能时,我得到一个错误:
error C2678: binary '==' : no operator found which takes a left-hand operand of type 'Graph::Vertex' (or there is no acceptable conversion)
我对 C++ 编程有点陌生,不知道为什么会发生这个错误,或者它意味着什么。有人可以解释为什么我会收到这个错误吗?我是否需要编写一个运算符重载函数来处理它?
非常努力地谷歌(并使用这个网站)来解决这个错误,但最后不得不在这里发表我的第一篇文章寻求帮助。注意:这是一个家庭作业,所以我决定不包含我的其余代码以避免被勺子喂答案,但如果我没有提供足够的信息,请告诉我。
【问题讨论】:
标签: c++ sorting object vector duplicates