假设有一个整数数组:

A[]={2, 2, 9, 8, 5, 7, 0, 6}

和一个模板:
B[]={1, 0, 0, 1, 1, 1, 0, 1}

我的问题是我们如何根据 B[] 重新排列 A[] 使得如果 B[i]==1, B[j]==0,那么 A[i] 将保证在 A[j] 之前新数组,应如下所示:
C[]={2, 8, 5, 7, 6, 2, 9, 0}

PS:我发现 "partition" 函数几乎就是答案,只是它只支持谓词。有什么解决方法吗?

任何提示都非常感谢!

最佳答案

这可以使用 thrust::stable_sort_by_key() 来实现。

关于CUDA 推力 : how to realize "partition" that supports "stencil"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12047961/

10-13 00:08