如何将一个数组的元素与另一个数组的元素进行对应排序

How to sort the elements of an array corresponding to elements of other array?

本文关键字:元素 数组 另一个 排序 一个      更新时间:2023-10-16

我有两个数组,其中第一个数组的第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}

可以这样做吗?如果是,比较函数是什么?

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

您将不得不实现比较,以便它在b中给定两个元素,比较a中相应的元素。您可以通过使用int index = element - b;来找出索引是什么,其中元素是比较函数中的一个项目。

我强烈建议使用pair<>struct/class同时保存您的a, b值-也节省了时间。