假设有一个整数数组:
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/