好的,这将是一个满口。
我有一个指向序列化二维数组的指针,除了指针算法之外,我想从(基本上)两个数组(我打算离开2D数组)中制作一对矢量。但是,我需要使用Thrust库。
这样我就可以在向量上使用thrust :: sort(),基于该对的第一个元素的值。在设备上。
所以,我需要一个矢量(最好是thrust :: device_vector)对(大小与arrayOne和arrayTwo的大小相匹配),其中第一个元素来自arrayOne,第二个元素来自arrayTwo。这样我就可以使用thrust :: sort()来按对的第一个元素进行排序。
对不起,由于缺乏代码,但我仍在试图找出如何实现这一点的更精细细节,因此问题。随着我的进展,我会发布我的尝试。先感谢您!
#UPDATE
我认为我真的很幸运并找到了解决方案,因为我发布了这个问题(有点,它比使用对更好的解决方案 - 这反过来是从我之前提出的问题向我提出的),结果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_vector(我必须从2D数组中取出)。快乐。
原始海报发现使用thrust::sort_by_key
的解决方案如下:
#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
问题中的应用程序需要创建一对输入迭代器,提供问题中提到的原始音调数组中的键和值向量。
这个答案被添加为社区维基答案,以便将这个问题从未答复的列表中删除