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

C++ Container of Non-Interleaved Stored Tuples

本文关键字:C++ 容器 元组 存储      更新时间:2023-10-16

我正在寻找元组std::vectorstd::array的变体,其中元组元素被非交错放置到单独的内存区域中,而不是像std::vector<std::tuple<...>>那样交错。

其动机是

  • 控制 优于对齐,进而提高矢量优化性能
  • 防止我们在OpenGL中接口低级别CPU-GPU数据传输操作(如顶点和颜色数组)时,必须解压缩数据元素

迭代程序应在取消引用时动态构造并返回boost::tuple<>

我知道并不是所有STL成员函数都能在这个容器中得到有效支持。例如,STL data()容器成员函数必须将所有单独的数组动态压缩到一个可变的动态创建的向量容器中,并返回其数据()。

有人已经建造了这样一个桌子容器吗?

Boost.Iterator具有您所描述的功能:boost::zip_iterator

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