C ++容器的非交错存储元组

时间:2011-06-09 14:37:25

标签: c++ boost data-structures containers memory-alignment

我正在寻找元组std::vectorstd::array的变体,其中元组元素位于 非交错 进入单独的内存区域而不是交错,例如,std::vector<std::tuple<...>>

这种动机是

  • 更好 控制 优于 路线 ,从而提高矢量优化的效果。
  • 在接入低级CPU-GPU数据传输操作(例如顶点和颜色数组)时,阻止我们 解包 数据元素的OpenGL。

迭代器应在取消引用时构建并返回boost::tuple<> 即时

我知道并非所有STL成员函数都可以在此容器中有效支持。例如,STL data()容器成员函数必须将 动态压缩 将所有单独的数组一起放入一个可变的动态创建的向量容器中并返回其data()。

是否有人构建过这样的表容器?

2 个答案:

答案 0 :(得分:4)

Boost.Iterator完全符合您的描述:boost::zip_iterator

答案 1 :(得分:1)

创建一个支持迭代的瘦包装器和围绕tuple<vector, vector, vector>的一些其他操作并以这种方式表示数据怎么样?我不知道任何提供所需接口的标准容器。