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

时间:2009-05-20 21:33:02

标签: c++ stl vector

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

std::vector<GameObject*> vectorToSort;

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

vectorToSort.at(position)->DistanceFromCamera();

我希望通过此float参数对向量进行排序,但是std :: sort似乎无法执行此操作。我怎样才能实现这种目标?

1 个答案:

答案 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());