使用选择排序对对象数组进行排序c ++
Posted
技术标签:
【中文标题】使用选择排序对对象数组进行排序c ++【英文标题】:Using a selection sort to sort an array of objects c++ 【发布时间】:2022-01-03 09:02:20 【问题描述】:目前,我编写了一个基本的选择排序,我需要让它根据类成员对一个对象数组进行排序——如果对守门员[MAX_GOALIES].getWins() 进行排序,则 getWins() 中的整数需要是按降序排列。以下是我目前所拥有的排序功能:
void sortWins(int array[], int size)
int maxIndex, maxValue;
for (int start=0;start<(size - 1);start++)
maxIndex = start;
maxValue = array[start];
for (int index = start + 1; index < size; index ++)
if (array[index].getWins() > maxValue.getWins())
maxValue = array[index];
maxIndex = index;
swap(array[maxIndex], array[start]);
我如何确保 sort 函数对类成员 getWins() 进行排序?
【问题讨论】:
你忘了问问题! 该函数对整数数组进行操作,而不是对象。int
类型没有成员函数 getWins()
(或 any 成员函数,因为它根本不是一个类)。您尝试手动选择排序是否有原因?为什么不定义适当的运算符并使用std::sort
?
【参考方案1】:
您可以使用std::sort
函数,指定您想要的排序标准。一个可能的例子是:
std::sort(objectsVector.being(), objectsVector.end(), [](object a, object b) -> bool
return a.getWins() > b.getWins();
);
这样在objectsVector中你将是对象列表,按降序排列。
如果您想使用实现选择排序的自定义函数,您必须向该函数传递一个对象数组,而不是整数。然后在您的函数中,您将对 getWins() 返回的值进行比较
【讨论】:
以上是关于使用选择排序对对象数组进行排序c ++的主要内容,如果未能解决你的问题,请参考以下文章