这是我使用的代码。 但它无法奏效。 new_end有问题;
thrust::device_vector<int> keys;
thrust::device_vector<int> values;
// after initialization.
pair<int*, int*> new_end;
new_end = thrust::unique_by_key(keys.begin(), keys.end(), values.begin());
keys.resize(thrust::distance(keys.begin,new_end.first));
values.resize(thrust::distance(values.begin(), new_end.right));
答案 0 :(得分:2)
此代码存在许多问题。
thrust::unique_by_key
将返回一对迭代器
适用于所用的矢量类型。在这种情况下,您正在使用
thrust::device_vector<int>
所以返回的迭代器类型是
thrust::device_vector<int>::iterator
不是int*
(我猜你
可能从中给出的示例中选择了int*
documentation。)
所以而不是:
pair<int*, int*> new_end;
尝试:
thrust::pair<thrust::device_vector<int>::iterator, thrust::device_vector<int>::iterator> new_end;
new_end.right
没有意义。也许你的意思是new_end.second
?
您无法使用keys.begin
我想您的意思是keys.begin()
上述更改至少应该允许您显示的代码进行编译。