C++ 对对象的二维向量进行排序

C++ 对对象的二维向量进行排序,c++,sorting,C++,Sorting,我正在做一个小拼图游戏(宝石拼图) 我有一个拼图块对象,用于板上的每个拼图块,具有以下属性: Position Pcorrect_; Position Pactuel_; bool estvide_; (第三个属性与此问题无关) 该职位结构简单,包括: unsigned ligne; unsigned colonne; 每个片段都存储在一个向量的一个向量中 std::vector<std::vector<Piece>> board_; 标准:向量板; 碎片最终混合

我正在做一个小拼图游戏(宝石拼图)

我有一个拼图块对象,用于板上的每个拼图块,具有以下属性:

Position Pcorrect_;
Position Pactuel_;
bool estvide_;
(第三个属性与此问题无关)

该职位结构简单,包括:

unsigned ligne;
unsigned colonne;
每个片段都存储在一个向量的一个向量中

std::vector<std::vector<Piece>> board_;
标准:向量板; 碎片最终混合在一起,因此正确的属性(位置)与实际属性(位置)不匹配

我一直在寻找一种可以对电路板进行排序的方法。实际位置必须与电路板的每个部分的当前位置相匹配


使用排序函数是否有一种优雅的方法?我目前的方法是使用4个循环和许多条件,这可能是错误的方法。

如果使用C++11,可以创建一个元组并对其排序

您可以定义自定义比较,如本例所示:


请查看
std::sort
函数。如果使用std::sort,则可能需要进行比较(使用
std::sort
,并为其提供一个函数,该函数接受
std::vector
并返回一个
bool
。然后,您可以在该函数中再次使用
std::sort
,以定义如何比较它们。