c++ - 在使用比较器时按降序对向量数组进行排序(C++)
问题描述
我有一个 Car* 对象的向量,它们指向具有 id 和 position 属性的对象。我想按位置降序对向量进行排序(即向量 [0] 等处的最高位置)。
这是下面的排序和比较器代码:
bool comparator(Car* firstObject, Car* secondObject) {
return firstObject->get_position() > secondObject->get_position();
}
void sortingFunction(vector<Car*> arrayOfCars) {
sort(arrayOfCars->begin(), arrayofCars->end(), comparator);
}
我尝试使用 std::reverse() 方法,但是(我可能错了)我看到它只适用于数字向量而不是对象向量。枚举是一种使用反向方法的方法,还是有一种方法可以让我通过比较器以某种方式将更大的功能添加到排序函数中?
提前致谢!
解决方案
排序功能无效。对于初学者,向量应该通过引用传递。并且向量不是通过指针传递的。因此,您可能不会将运算符->
应用于它。
所以函数定义看起来像
void sortingFunction( vector<Car*> &arrayOfCars )
{
sort( arrayOfCars.begin(), arrayofCars.end(), comparator );
}
比较器可以用这些微小的变化来编写
bool comparator( const Car *firstObject, const Car *secondObject)
{
return firstObject->get_position() > secondObject->get_position();
}
在这种情况下,成员函数get_position
必须是一个常量成员函数,声明如下
T get_position() const;
^^^^^
其中T
是函数的返回类型。
推荐阅读
- go - 如何提取表单数据的字段名称
- java - 具有多个名称空间的 Jaxb Unmarshar
- ios - 使用 SecKey Xamarin.iOS 生成 RSA 密钥
- sql - SQL 仅在过滤掉其他列中具有相同结果的重复项后显示重复项
- ios - iOS 12 的 cocos2d v2.0 的第一个工作版本?
- php - 无法通过php连接mysqli数据库
- c# - Azure WebApp 和解析 Excel
- python - 如何将模块作为类导入?
- mysql - MySQL Lead 功能不起作用。我已经尝试过,但它的工作是滞后功能。请帮助我
- c - 需要帮助来解析我的自定义 CLI 命令