Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何对一个数组的元素与其他数组的元素进行排序?_C++_Arrays_Sorting - Fatal编程技术网

C++ 如何对一个数组的元素与其他数组的元素进行排序?

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

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

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实现。