C++:如何创建一个类的多对象集



这是我的类声明:

class Person
{
private:
string name;
public:
void showData()
{
cout << name << endl;
}
void insertData()
{
cin >> name;
}
bool operator<(Person p)
{
return name < p.name;
}
};

现在我正在尝试创建一个person类的多对象集,如何做到这一点?这是我要写的主要功能:

int main()
{
multiset<Person> m;
for (int i = 0; i < 6; i++)
{
Person p;
p.insertData();
m.insert(p);
}
multiset<Person>::iterator it;
// for (it = m.begin(); it != m.end(); it++)
// {
//    cout << it.name << endl;
// }
}

您需要以稍微不同的方式定义operator<。我会把它定义为朋友而不是类成员,但如果它是类成员,它应该是const

所以这是可以的

class Person
{
...
bool operator<(Person p) const
{
return name < p.name;
}
};

但我会像这个一样

class Person
{
...
friend bool operator<(const Person& x, const Person& y)
{
return x.name < y.name;
}
};

最新更新