【发布时间】:2014-03-06 08:15:12
【问题描述】:
这是对previous question about reordering in place 的更新。关于索引向量存在一些混淆。调用要重新排序的向量 vA,以及索引向量 vI,然后 vA 应按此顺序重新排序,vA[vI[0]],vA[vI[1]],vA[vI[2],... .一个示例用法是将 vI 初始化为一组 vA.size() 索引,从 0 到 vA.size()-1,然后根据 vA 对 vI 进行排序(使用 vA[vI[...]] 进行比较)。然后可以使用 reorder 函数对 vA 根据 vI 进行排序。
将初始 vA 视为已排序 vA 的排列。在根据 vA 对 vI 进行排序之后,然后根据 vI 对 vA 重新排序“取消排列” vA 回到排序后的排列。使用下面显示的示例函数,重新排序 vA 也会将 vI 重新排序回其初始化状态(0 到 vA.size()-1)。
【问题讨论】:
-
我认为您正在尝试执行“收集”功能。如果你想要它已经在 boost 库中实现 (boost/algorithm/gather.hpp) boost.org/doc/libs/1_41_0/doc/html/boost/mpi/gather.html
-
这里的目标是重新排序。制作有序副本很容易: for(i = 0; i
-
我更新了这个问题,加入了上一个问题的链接。