Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据对象的浮点值对对象std::vector进行排序 我有一个C++ STD::向量表示为: std::vector<GameObject*> vectorToSort;_C++_Stl_Vector - Fatal编程技术网

如何根据对象的浮点值对对象std::vector进行排序 我有一个C++ STD::向量表示为: std::vector<GameObject*> vectorToSort;

如何根据对象的浮点值对对象std::vector进行排序 我有一个C++ STD::向量表示为: std::vector<GameObject*> vectorToSort;,c++,stl,vector,C++,Stl,Vector,我希望通过这个float参数对向量进行排序,但是std::sort似乎无法做到这一点。如何实现这种排序?您希望使用如下谓词: struct VectorSortP { bool operator()(const GameObject *a, const GameObject *b) const { return a->DistanceFromCamera() < b->DistanceFromCamera(); } }; std::sort(v

我希望通过这个float参数对向量进行排序,但是std::sort似乎无法做到这一点。如何实现这种排序?

您希望使用如下谓词:

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

std::sort(vectorToSort.begin(), vectorToSort.end(), VectorSortP());
struct VectorSortP{
布尔运算符()(常数游戏对象*a,常数游戏对象*b)常数{
返回a->DistanceFromCamera()DistanceFromCamera();
}
};
排序(vectorToSort.begin()、vectorToSort.end()、VectorSortP());

我猜你的意思是GameObject有一个名为DistanceFromCamera()的方法,而不是std::vectorMagnus,我确实为他纠正了这一点:-是的,你是对的,我刚刚用我当前使用的更新了代码。谢谢你快速的回答,艾凡,我正在测试。当我收到一个错误时,我会尽快回复你:C2804:binary'运算符它必须是运算符()而不是运算符aah,它应该是运算符()。这是一个函子。我想弄明白,但你们打败了我:)谢谢,它起作用了@亚当·罗森菲尔德:谢谢你的编辑,我有点太想尽快得到答案;)。
struct VectorSortP {
    bool operator()(const GameObject *a, const GameObject *b) const {
        return a->DistanceFromCamera() < b->DistanceFromCamera();
    }
};

std::sort(vectorToSort.begin(), vectorToSort.end(), VectorSortP());