【发布时间】:2014-03-11 11:55:33
【问题描述】:
我正在尝试按名称对指向对象的指针数组进行排序,但我不知道我是否采用了正确的方式。到目前为止,这是我的代码...
主要
Person *personArray[3]; //pointers to person objects
personArray[0] = new Employee("Bill", 1200);
personArray[1] = new Customer("Steve");
personArray[2] = new Employee("Bill", 1200);
Person *tempArray[3];
string temp1;
for(int i=3-1;i>0;i--)
{
int min = 0;
for(int j=1;j<i;j++)
{
if(*tempArray[j] < *personArray[min])
{
min = j;
}
}
temp1 = tempArray[min]->printname();
tempArray[min] = tempArray[i];
tempArray[i] = temp1;
}
class Person
{
public:
Person(string);
virtual void printname() = 0;
bool operator <(const Person& name1) const;
bool operator ==(const Person& name1) const;
protected:
string name;
};
bool Person::operator <(const Person& name1) const
{
return (this->name < name1.name);
}
bool Person::operator ==(const Person& name1) const
{
return (this->name == name1.name);
}
void Person::printname()
{
cout << "Name: " << name << endl;
}
【问题讨论】:
-
你可以使用标准库算法吗?如果是这样,请将
std:sort与自定义谓词一起使用。 -
我不这么认为,我们被告知要查找 string::compare 并使用重载运算符
标签: c++ arrays sorting object pointers