我有一个C ++ std :: vector表示为:
std::vector<GameObject*> vectorToSort;
vectorToSort中的每个对象都包含一个float参数,该参数通过调用“DistanceFromCamera()”返回:
vectorToSort.at(position)->DistanceFromCamera();
我希望通过此float参数对向量进行排序,但是std :: sort似乎无法执行此操作。我怎样才能实现这种目标?
答案 0 :(得分:18)
你想使用这样的谓词:
struct VectorSortP {
bool operator()(const GameObject *a, const GameObject *b) const {
return a->DistanceFromCamera() < b->DistanceFromCamera();
}
};
std::sort(vectorToSort.begin(), vectorToSort.end(), VectorSortP());