Vector 删除对象向量中的重复项
我有一个班级Vector 删除对象向量中的重复项,vector,duplicates,unique,erase,Vector,Duplicates,Unique,Erase,我有一个班级 class CPerson { private: string name; string egn; public: CPerson() {}; CPerson(string getname, string getegn) { name = getname; egn = getegn; } bool operator < (const CPerson &obj) {
class CPerson
{
private:
string name;
string egn;
public:
CPerson() {};
CPerson(string getname, string getegn)
{
name = getname;
egn = getegn;
}
bool operator < (const CPerson &obj)
{
if (egn < obj.egn)
return true;
else
return false;
}
bool operator == (const CPerson &obj)
{
if (egn == obj.egn)
return true;
else
return false;
}
请看这个。我认为你所做的是删除最后一个唯一的元素。
作为回答,我希望此代码能够正常工作:
void remove_duplicates()
{
sort(people.begin(), people.end());
vector<int>::iterator it = unique(people.begin(), people.end());
people.resize( std::distance(myvector.begin(),it));
}
我希望这对您有所帮助错误在于我在名称中插入了应该是egn的内容,并在egn中插入了名称。 这: 应该是这样的:
CCity(string filename)
{
string name, egn;
ifstream file(filename);
file >> city_name;
while (file >> egn>> name)
{
people.push_back(CPerson(name,egn));
}
}
是的,我正在删除最后一个独特的元素。但是当复制粘贴到我的代码中时,您的代码有错误。@duerdak我的代码示例的最后一行包含myvector,它是people vector的占位符。很抱歉给您带来不便。
void remove_duplicates()
{
sort(people.begin(), people.end());
vector<int>::iterator it = unique(people.begin(), people.end());
people.resize( std::distance(myvector.begin(),it));
}
CCity(string filename)
{
string name, egn;
ifstream file(filename);
file >> city_name;
while (file >> name >> egn)
{
people.push_back(CPerson(name,egn));
}
}
CCity(string filename)
{
string name, egn;
ifstream file(filename);
file >> city_name;
while (file >> egn>> name)
{
people.push_back(CPerson(name,egn));
}
}