看起来operator[]
的{{1}}返回thrust::vector
,无法用于访问结构内的数据。
想象一下我有
thrust::reference
struct Point{
int x,y
}
int main(){
thrust::device_vector<Point> myvec;
// ... I fill in the vector ...
(myvec[0]).x = 4; // This line fails
return 0;
}
因(myvec[0]).x = 4;
我也尝试过:
error: class "thrust::device_reference<Point>" has no member "x"
但是Point &p = myvec[0];
p.x = 4;
唯一有效的是
error: initial value of reference to non-const must be an lvalue
但它没有做我想要的......
如何修改Point p = myvec[0];
p.x = 4;
?
请注意,我正在处理更复杂的事情,而且这个例子可能不相关。
编辑:感谢您指出副本。 解决方案很奇怪,但绝对是唯一的出路。