【发布时间】:2020-02-19 11:18:44
【问题描述】:
我有一个 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() 方法,但是(我可能错了)我看到它只适用于数字向量而不是对象向量。枚举是一种使用反向方法的方法,还是有一种方法可以让我通过比较器以某种方式将更大的功能添加到排序函数中?
提前致谢!
【问题讨论】:
-
如果这是一个 C++ 问题,那么为什么要使用
c语言标签?请不要使用不相关的标签发送垃圾邮件。 -
1) 为什么需要
std::reverse?您的比较器是否未按您想要的顺序排序? 2)std::reverse适用于任何提供双向迭代器的容器。std::vector中存储的对象类型无关紧要。 -
而
std::reverse不依赖于容器的内容。 -
为什么先以一种方式排序,然后再反向排序?为什么不立即以正确的方式排序?
-
我误读了问题,不得不删除我的答案。实际上有什么问题?为什么要使用
std::reverse?
标签: c++ sorting oop c++11 vector