如果存储了Thrust device_vector的.begin()迭代器,那么在调整大小()后它是否仍然指向正确的位置?

时间:2013-05-05 22:36:51

标签: c cuda iterator thrust

例如:

thrust::device_vector<float> vec(...);
thrust::device_vector<float>::iterator i = vec.begin();
vec.resize(...);    // vec may get reallocated and moved in memory here

现在,vec.begin()是否已更新并仍然有效地指向vec的开头?

1 个答案:

答案 0 :(得分:3)

调整大小后,如果向量最初没有足够的空间,则迭代器将失效,因此您必须回忆vec.begin()以获得新的有效迭代器。