我不知道为什么下面的代码没有输出 1,2 而是一些随机数
#include <thrust/set_operations.h>
#include <thrust/device_vector.h>
#include <ostream>
int main() {
int a[]= { 1,2,3,4,5,6};
int b[] = {1,2,8};
int *ga, *gb,*gr;
cudaMalloc((void**)&ga, 6* sizeof(int));
cudaMalloc((void**)&gb, 3* sizeof(int));
cudaMalloc((void**)&gr, 3* sizeof(int));
cudaMemcpy(ga, a, 6 * sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(gb, b, 3 * sizeof(int), cudaMemcpyHostToDevice);
thrust::device_ptr<int> end;
thrust::device_ptr<int> gaptr(ga);
thrust::device_ptr<int> gbptr(gb);
thrust::device_ptr<int> grptr(gr);
end = thrust::set_intersection(gaptr, gaptr+6, gbptr, gbptr+3,grptr);
printf("%d ", *grptr);
grptr++;
printf("%d ", *grptr);
getchar();
return 0;
}
此外,如何使用 begin 和 end1 来遍历结果数组中的所有值