c++ - 如何将模板类型的vector.begin()迭代器存储在thrust中?

标签 c++ cuda iterator gpgpu thrust

当我尝试将变量分配给该迭代器时,我收到错误:expected a ";" ,其中vecthrust::device_vector<my_type> , j是一些int ,和my_type是一个模板类型:

for (thrust::device_vector<my_type>::iterator i = vec.begin(); i < vec.end(); i += j) Foo(i);

这是循环 vector 的正确方法吗?我是否声明i作为正确的类型?

最佳答案

标准容器使用迭代器来遍历其他对象(即其元素)的集合,由于迭代器是所有标准容器中实现的抽象概念,因此可以通过以下方式实现迭代器:

typename thrust::device_vector<my_type>::iterator it = vec.begin();
for (it; it != vec.end(); it = it+j) 
   Foo(*it);

以下是对 STL 容器的引用:http://www.cplusplus.com/reference/stl/

关于c++ - 如何将模板类型的vector.begin()迭代器存储在thrust中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16380464/

相关文章:

boost - 根据 typedef 可以是 wcout 的通用 cout

cuda - 这是 CUDA 中的错误吗? (遇到非法内存访问)

c++ - CUDA 的性能取决于声明变量

rust - 如何让函数返回具有相同项目类型的两个迭代器之一?

python - 为什么我的返回列表的类不会迭代?

c++ - 嵌套迭代器类、begin() 和 end() 哨兵问题

c++ - WinCE 6.0 中的自定义文件对话框

c++ - 如何将 `std::string` 传递给 `QString` `arg` 方法?

c++ - 管理 vector 中的实体

c++ - 这个自定义的 md5 哈希算法是如何实现的?