C++ 对二维数组排序

C++ 对二维数组排序,c++,arrays,2d,C++,Arrays,2d,我试图对两组数据进行排序,它们要么是二维数组,要么是并行数组,这两种方式都没有区别,但我似乎无法理解。以下是两个阵列: /////way one/// int id[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int numDetected[10] = {40, 21, 2, 19, 45, 32,43, 90, 100, 8}; 或 这没什么区别,但我似乎无法理解这一点 我想按numDetected数量将数组排序为新数组(无论是2d数组还是Parrelel

我试图对两组数据进行排序,它们要么是二维数组,要么是并行数组,这两种方式都没有区别,但我似乎无法理解。以下是两个阵列:

/////way one///

int id[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int numDetected[10] = {40, 21, 2, 19, 45, 32,43, 90, 100, 8};

这没什么区别,但我似乎无法理解这一点

我想按
numDetected
数量将数组排序为新数组(无论是2d数组还是Parrelell数组)。因此,最大的
numDetected
位于元素0处,最小的位于元素末尾。但在执行此操作时,我希望将与之相关联的id保持在与
numDetected
相同的元素中。因此,如果
numDetected[2]
是最大的,我希望
numDetected[2]
id[2]
成为新数组中的第一个元素

有人能帮我吗?

struct values
struct values
{
    int id;
    int detected;
} data[10] = ...;

// intentionally reversed to cause sort in descending order
bool operator<(const values& left, const values& right) { return left.detected > right.deteted; }

values *begin = data, *end = (&data)[1];
std::sort(begin, end);
{ int-id; 检测到int; }数据[10]=。。。; //故意反转以使排序按降序进行 布尔运算符right.detted;} 值*begin=data,*end=(&data)[1]; 排序(开始、结束);
拥有一个
结构项{int-id;int-numDetected;}
和这些结构的容器不是更容易吗?最好是
operator(很高兴看到我的想法就是你想出的那一个。)我不明白你在用
(&data)[1]
做什么。那是什么?@nbubis:不,不是。它在10个整数的指针数组上使用指针算法。因此,当所有内容都按类型大小进行缩放时,类型为“10整数数组”,并向右移动到整个数组的末尾。不过,不要尝试使用指针,只使用实际数组。
struct values
{
    int id;
    int detected;
} data[10] = ...;

// intentionally reversed to cause sort in descending order
bool operator<(const values& left, const values& right) { return left.detected > right.deteted; }

values *begin = data, *end = (&data)[1];
std::sort(begin, end);