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

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

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

这样做的动机是

  • 更好地控制对齐,进而 boost vector 优化性能。
  • 防止我们在连接低级 CPU-GPU 数据传输操作(例如顶点和颜色数组)时必须解包数据元素OpenGL。

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

我知道并非所有 STL 成员函数都可以在此容器中得到有效支持。例如 STL data()容器成员函数必须动态压缩所有单独的数组到一个可变的动态创建的 vector 容器中并返回它的 data()。

有没有人构建过这样的表格容器?

最佳答案

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

关于非交错存储元组的 C++ 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6294578/

相关文章:

c++ - Boost Log Scoped Log/Attributes 未显示

c++ - C++库应如何允许自定义分配器?

c++ - 我怎么知道boost线程是否完成?

c++ - Std 或 boost atomic unsigned char[32]

arrays - 用数组存储k叉树

c++ - 具有静态存储持续时间的常量初始化变量的初始化顺序

c++ - 使用他们的包在 Dev-C++ 中安装 Allegro

c++11 中 boost::filesystem::copy_file() 缺少符号

algorithm - 构建双数组trie时如何记录节点的子节点?

C++ 将 5 字节结构与缓存行对齐