C++:如何创建 class 的对象的多重集?
C++: How to create a multiset of objects of a class?
这是我的 class 声明:
class Person
{
private:
string name;
public:
void showData()
{
cout << name << endl;
}
void insertData()
{
cin >> name;
}
bool operator<(Person p)
{
return name < p.name;
}
};
现在我正在尝试创建人 class 的多重对象集,该怎么做?
这是我写的主要功能:
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<
。我会将其定义为朋友而不是 class 成员,但如果它是 class 成员,则应该是 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;
}
};
这是我的 class 声明:
class Person
{
private:
string name;
public:
void showData()
{
cout << name << endl;
}
void insertData()
{
cin >> name;
}
bool operator<(Person p)
{
return name < p.name;
}
};
现在我正在尝试创建人 class 的多重对象集,该怎么做? 这是我写的主要功能:
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<
。我会将其定义为朋友而不是 class 成员,但如果它是 class 成员,则应该是 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;
}
};