好吧,这会是一大口。
我有一个指向序列化2D数组的指针,除了指针算法之外,我想从(本质上)两个数组(我计划从2D数组中提取的)中生成一个成对的向量。然而,我需要使用推力库。
--这是为了使我能够根据对的第一个元素的值,在向量上使用推力::sort()。在设备上.
因此,我需要一个向量(最好是thrust::device_vector),它的大小与arrayOne和arrayTwo的大小相匹配,其中第一个元素来自arrayOne,第二个元素来自arrayTwo。这样,我就可以使用pair::sort ()来按照对的第一个元素进行排序。
不好意思,因为缺少代码,但我仍在试图找出如何实现这一点的更详细的细节,因此出现了一个问题。我会在路上贴出我的尝试。提前谢谢你!
#更新
我觉得我真的很幸运,并且找到了解决方案,因为我贴出了这个问题(这是一个比使用对更好的解决方案-它是从我之前提出的一个问题中向我建议的),原来推力实际上提供了我默认要寻找的东西:
#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*
所以,现在我要做的就是从两个数组中得到两个thrust::device_vectors (我必须从2D数组中提取)。高兴的。
发布于 2014-05-03 01:05:42
原始海报找到了一个使用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拿来的
问题中的应用程序将需要创建一对输入迭代器,从问题中提到的原始音调数组中提供键和值向量。
这个答案被添加为一个社区wiki答案,以将这个问题从未回答的列表中删除。
https://stackoverflow.com/questions/7042014
复制