如何对与其他数组元素对应的数组元素进行排序?

时间:2012-12-24 09:31:29

标签: c++ arrays sorting

我有2个数组,其中第一个数组的第i个元素对应于其他数组的第i个元素。也就是说,如果我将第一个数组的第i个元素移动到第j个位置,那么我必须对第二个数组执行相同的操作。

我知道我可以使用pair<int, int>然后使用sort函数来执行此操作,但这不是一个选项。

所以,我认为可能是sort函数的第三个参数可以用于此目的:像:

int a[4] = {2,3,1,0}, b[4] = {10,9,6,4};  //2 corresponds to 10, 3 corrspond to 9 and so on...

sort(a,a+10); // a = {0,1,2,3}
sort(b, b+10, compare);  //->should change b to {4,6,10,9}

可以这样做吗?如果是,比较功能是什么?

2 个答案:

答案 0 :(得分:1)

是的,可以这样做。您的比较器需要是一个对象,其中包含从b中的元素到a中相应元素的映射,您可以使用它来确定排序。

答案 1 :(得分:0)

你必须实现比较,以便给定b中的两个元素,比较a中的相应元素。你可以通过int index = element - b;找出什么是索引,其中element是compare函数中的一个项目。

我会认真建议使用pair<>struct/class同时保存您的a,b值 - 也可以节省时间。