C++ 如何对一个数组的元素与其他数组的元素进行排序?
我有两个数组,其中第一个数组的第I个元素对应于另一个数组的第I个元素。也就是说,如果我将第一个数组的第I个元素移动到第j个位置,那么我必须对第二个数组执行相同的操作 我知道我可以使用C++ 如何对一个数组的元素与其他数组的元素进行排序?,c++,arrays,sorting,C++,Arrays,Sorting,我有两个数组,其中第一个数组的第I个元素对应于另一个数组的第I个元素。也就是说,如果我将第一个数组的第I个元素移动到第j个位置,那么我必须对第二个数组执行相同的操作 我知道我可以使用pair然后使用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... sor
pair
然后使用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中相应元素的映射的对象,您可以使用该映射来确定顺序。您必须实现比较,以便在给定b中的两个元素时,它比较a中的相应元素。你可以通过取
intindex=element-b来找出什么是索引代码>其中元素是比较函数中的一项
我郑重建议使用pair
或struct/class
来同时保存a、b值,这样也可以节省时间 您必须实现比较,以便在b中给定两个元素时,比较a中相应的元素。你可以通过取intindex=element-b来找出什么是索引代码>其中元素是比较函数中的一项
我郑重建议使用pair
或struct/class
来同时保存a、b值,这样也可以节省时间 std::sort
不稳定。对数组a
进行排序后,映射将完全破坏。即使将映射传递给compare
函数,我也不认为有任何方法可以更新映射。毕竟,compare
功能只能说一个项目应该放在另一个项目之前还是之后。重新定位由排序算法完成,取决于STL实现。std::sort
不稳定。对数组a
进行排序后,映射将完全破坏。即使将映射传递给compare
函数,我也不认为有任何方法可以更新映射。毕竟,compare
功能只能说一个项目应该放在另一个项目之前还是之后。重新定位由排序算法完成,并取决于STL实现。