Hier im unten Code verstehe ich nicht, warum die benutzerdefinierte Struktur erstellt wurde und wie der überladene operator() funktioniert.Es wäre eine große Hilfe für mich, wenn mir jemand helfen. Hier im Code habe ich versucht, den benutzerdefinierten Datentyp in den Satz einzufügen.overloading operator() für set
#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++;
}
}
}
Einige Empfehlungen: Verwenden Sie 'this' nicht, verwenden Sie nur den Namen. Verkapseln Sie Ihre Datenelemente ('name' und' id') unter dem Tag 'private:'. –