1

我有 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}

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

4

2 回答 2

1

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

于 2012-12-24T09:37:16.150 回答
0

您必须实现比较,以便它在给定 b 中的两个元素的情况下比较 a 中的相应元素。int index = element - b;您可以通过在比较函数中获取元素是您的项目之一来确定索引是什么。

我会认真建议使用pair<>or astruct/class同时保持你的 a、b 值 - 也可以节省时间。

于 2012-12-24T09:40:13.823 回答