-4
在這裏,在下面的代碼中,我不明白爲什麼自定義的structre已經創建,以及重載的操作符()如何工作。如果有人幫我解決問題,對我來說這將是一個很大的幫助。 在代碼中,我嘗試在該集合中插入自定義數據類型。重載操作符()集
#include<iostream>
#include<set>
#include<string>
using namespace std;
class Person
{
public:
string name;
int id;
Person()
{
}
Person(int id, string name)
{
this->id = id;
this->name = name;
}
void print() const
{
cout<<"ID : "<<id <<" Name: "<<name<<endl;
}
bool operator < (const Person& P) const
{ ///cout<<this->id<<" "<<P.id<<endl;
if (this->id > P.id)
return true;
return false;
}
bool operator == (const Person& P) const
{
if (this->id == P.id)
return true;
return false;
}
};
struct custom
{
bool operator() (const Person& left,const Person& right) const
{
if(right < left)
{
if (right == left)
return true;
return true;
}
return false;
}
};
int main()
{
set<Person,custom> s;
s.insert(Person(5,string("G")));
s.insert(Person(1,string("A")));
s.insert(Person(1,string("A")));
s.insert(Person(2,string("B")));
s.insert(Person(2,string("B")));
s.insert(Person(3,string("C")));
s.insert(Person(4,string("D")));
s.insert(Person(4,string("D")));
set<Person> :: iterator it = s.begin();
while(it != s.end())
{
it->print();
it++;
}
}
}
一些建議:不要使用'this',只使用名稱。在'private:'標籤下封裝數據成員('name'和'id')。 –