如何通过浮点值对对象std :: vector进行排序

Bro*_*olf 5 c++ stl vector

我有一个C++ std :: vector表示为:

std::vector<GameObject*> vectorToSort;
Run Code Online (Sandbox Code Playgroud)

vectorToSort中的每个对象都包含一个float参数,该参数通过调用"DistanceFromCamera()"返回:

vectorToSort.at(position)->DistanceFromCamera();
Run Code Online (Sandbox Code Playgroud)

我希望通过这个float参数对向量进行排序,但是std :: sort似乎无法做到这一点.我怎样才能实现这种目标?

Eva*_*ran 18

你想使用这样的谓词:

struct VectorSortP {
    bool operator()(const GameObject *a, const GameObject *b) const {
        return a->DistanceFromCamera() < b->DistanceFromCamera();
    }
};

std::sort(vectorToSort.begin(), vectorToSort.end(), VectorSortP());
Run Code Online (Sandbox Code Playgroud)