我想对一个结构数组进行排序,其中每个结构都有一个数组。我想为排序创建自定义 compare() 函数,但还不能:
struct box{
int dims[6];
} boxArray[32];
所以,有32个盒子,每个盒子有6个维度。
例如
框1具有以下尺寸:
1 2 5 10 20 30
方框2:
1 2 3 4 5 6 9
我希望 box2 在 box1 之前排序,因为在前两个维度中它们是相等的,但在下一个维度中,框 2 更小。
我的想法是使用排序
(boxArray,boxArray+32,customCmpBoxes)
在自定义函数中,递归比较,直到一个更小(或不更小),但我无法让它工作。
bool customCmpBoxes(const box& left, const box& right) {
return std::lexicographical_compare(
left.dims, left.dims + sizeof(left.dims)/sizeof(left.dims[0]),
right.dims, right.dims + sizeof(right.dims)/sizeof(right.dims[0]));
}