好吧,这将是一口。
我有一个指向序列化二维数组的指针,除了指针算术之外,我想从(基本上)两个数组(我打算从二维数组中取出)制作一个对向量。但是,我需要使用Thrust库。
这样我就可以根据对的第一个元素的值在向量上使用推力::sort()。在设备上。
所以,我需要一个成对的向量(最好是推力::device_vector)(大小显然与arrayOne和arrayTwo的大小相匹配),其中对的第一个元素来自arrayOne,第二个来自arrayTwo。这样我就可以使用推力::sort() 来按对的第一个元素进行排序。
抱歉,由于缺少代码,但我仍在试图弄清楚如何实现这一点的更详细的细节,因此是这个问题。我会在我进行的过程中发布我的尝试。先感谢您!
#更新
我想我实际上很幸运并找到了解决方案,因为我发布了问题(有点,它比使用 pair 更好的解决方案 - 这反过来是从我之前提出的问题中向我建议的),事实证明 Thrust 实际上提供了我默认情况下正在寻找:
#include <thrust/sort.h>
...
const int N = 6;
int keys[N] = { 1, 4, 2, 8, 5, 7};
char values[N] = {'a', 'b', 'c', 'd', 'e', 'f'};
thrust::sort_by_key(keys, keys + N, values);
// keys is now { 1, 2, 4, 5, 7, 8}
// values is now {'a', 'c', 'b', 'e', 'f', 'd'}
*取自http://code.google.com/p/thrust/wiki/QuickStartGuide#Fancy_Iterators *
所以,现在我要做的就是从两个数组中取出两个推力::device_vectors(我必须从二维数组中取出)。快乐的。