我正在尝试使用OpenCL来提高我们软件的速度。我们经常使用地图,为了简化,将地图表示为 std::vector< std::vector >。OpenCL API 将原始 c 风格的指针作为参数,例如上面例子中的 int*。
我的问题:
- stl 中是否有实现保证向量在内部在内存中是连续的?
- 我可以安全地将 std::vector 转换为 int* 并期望它起作用吗?
- 在向量向量的情况下,我仍然可以假设这是正确的吗?我希望向量能够保存其他状态数据,或对齐问题,或者其他东西......
- 解决这个问题的最佳方法是什么?编写一个自定义的 2d 数据结构,它包含一个内部的、连续的内存缓冲区并使用它?我必须从向量中复制很多...
谢谢。