我正在尝试对两组数据进行排序,无论是二维数组还是并行数组,无论哪种方式都没有区别,但我似乎无法弄明白。以下是两个数组:
/////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};
或
int 2dArray[2][10];
它没有任何区别,但我似乎无法弄清楚这一点。
我希望按numDetected
数量将数组排序为新数组(无论是2d数组还是parrellel数组)。因此,最大的numDetected
位于元素零处,最小位于结尾处。但是在执行此操作时,我希望将与该关联的id保持在与numDetected
相同的元素中。因此,如果numDetected[2]
是最大的,我希望numDetected[2]
和id[2]
成为新数组中的第一个元素。
任何人都可以帮助我吗?
答案 0 :(得分:1)
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);