好的,这将是一个满口的。
我有一个指向序列化二维数组的指针,除了指针算术之外,我想从(基本上)两个数组(我计划从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_vectors(我必须离开2D数组)。高兴。
答案 0 :(得分:1)
原始海报使用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
问题中的应用程序需要创建一对输入迭代器,提供问题中提到的原始音调数组中的键和值向量。
此答案已添加为社区维基解答,以便将此问题从未答复的列表中删除