shake_transform_iterator作为推力中的第二个参数的重点是什么:: dredion算法
What is the point of the make_transform_iterator as the second parameter in thrust::reduce algorithm?
代码如下:
thrust::reduce(thrust::make_transform_iterator(v.begin(), square()),
thrust::make_transform_iterator(v.end(), square()));
在此处取自Transform_iterator示例。具体来说,将以下用作第二个迭代器吗?
是多余的吗?thrust::make_transform_iterator(v.end(), square())
为什么不在其位置使用以下内容?
thrust::reduce(thrust::make_transform_iterator(v.begin(), square()),
v.end());
我想在这个特定示例中,由于thrust::make_transform_iterator(v.begin(), square())
不会产生与v
不同的迭代器,所以我的更新代码与原始代码相同,这是正确的吗?
编辑
我唯一的猜测是确保两个迭代器都是相同类型的?我发现的所有确认我对此的怀疑是该文档中的以下文本"转换函数(即Square_root and Square)从throust :: Unary_function继承。必要的Typedef声明。"虽然,我认为这特别是指函子本身。
更新
请参阅罗伯特·克罗维尔(Robert Crovella)的答案评论。
这里的迭代器用于标记特定序列的开始和结束。v.end()
在这里不标记序列的末端:
thrust::reduce(thrust::make_transform_iterator(v.begin(), square()),
v.end());
标志着。
的开始这里的其他一些结构可能具有更好的外观(在情人眼中是美女),例如:
auto my_iter = thrust::make_transform_iterator(v.begin(), square());
thrust::reduce(my_iter, my_iter+v.size());
相关文章:
- 通过引用函数传递指针参数是什么意思?
- FFT函数的参数是什么意思
- v8 源代码中 ArrayMap 函数的回调 fn 参数是什么?
- 这个奇怪的函数参数是什么?
- 这个函数的参数是什么?
- OpenGL 调试 错误回调函数的 ID 参数是什么?
- 操作员[]作为成员函数的正确模板参数/参数是什么?
- 这个 lambda 的参数是什么类型?
- 函数upper_bound的参数是什么
- mpi_scatterv中的显示参数是什么?
- 这些额外的参数是什么意思
- ON_LBN_SELCHANGE的参数是什么
- 默认参数模板与可变参数模板:最后一个模板参数是什么
- D3DX11CompileFromFile中的第四个参数是什么
- 在 JavaCV 中传递给 cvFindContours() 的参数是什么?
- 这个向量类中的参数是什么
- fcntl() 中的第三个参数是什么
- 参数是什么意思
- std::vector.resize()中的第二个参数是什么意思
- 此签名中的第二个参数是什么意思