-4
のオーバーロード演算子()以下のコードでは、カスタム構造体が作成された理由と、オーバーロードされた演算子()の働きを理解できません。 ここでコードでは、カスタムデータ型をセットに挿入しようとしました。セット
#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')をカプセル化します。 –