我正在尝试使用OpenCL来提高软件的运行速度。我们经常处理地图,为了简化表示,将地图表示为一个std::vector< std::vector >。在上面的例子中,OpenCL API需要原始的c风格指针作为参数,例如int*。
我的问题:
- STL中有实现保证vector在内部是连续存储的吗?
- 我能安全地将std::vector 强制转换为int*并期望它能正常工作吗?
- 对于一个向量的向量,我仍然可以假设这是真的吗?我预计vector会持有其他状态数据、对齐问题或其他一些问题...
- 最好的方法是什么?编写一个自定义的2D数据结构来持有内部的连续存储缓冲区,并使用它?我必须经常从vector复制/到vector复制...
谢谢。
vector<bool>
是规则的例外。http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98 - Motti