我有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}
可以这样做吗?如果是,比较功能是什么?
答案 0 :(得分:1)
是的,可以这样做。您的比较器需要是一个对象,其中包含从b中的元素到a中相应元素的映射,您可以使用它来确定排序。
答案 1 :(得分:0)
你必须实现比较,以便给定b中的两个元素,比较a中的相应元素。你可以通过int index = element - b;
找出什么是索引,其中element是compare函数中的一个项目。
我会认真建议使用pair<>
或struct/class
同时保存您的a,b值 - 也可以节省时间。