非交错存储元组的C++容器
C++ Container of Non-Interleaved Stored Tuples
我正在寻找元组的std::vector
或std::array
的变体,其中元组元素被非交错放置到单独的内存区域中,而不是像std::vector<std::tuple<...>>
那样交错。
其动机是
- 控制 优于对齐,进而提高矢量优化性能
- 防止我们在OpenGL中接口低级别CPU-GPU数据传输操作(如顶点和颜色数组)时,必须解压缩数据元素
迭代程序应在取消引用时动态构造并返回boost::tuple<>
。
我知道并不是所有STL成员函数都能在这个容器中得到有效支持。例如,STL data()
容器成员函数必须将所有单独的数组动态压缩到一个可变的动态创建的向量容器中,并返回其数据()。
有人已经建造了这样一个桌子容器吗?
Boost.Iterator具有您所描述的功能:boost::zip_iterator
创建一个瘦包装器,支持围绕tuple<vector, vector, vector>
的迭代和其他一些操作,并以这种方式表示数据,怎么样?我不知道有任何标准容器可以提供您需要的接口。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 用于访问容器<T>数据成员的正确 API
- Eigen如何在容器循环中干净地附加矩阵
- 模板专用化(按容器):value_type
- 关联容器的下界复杂性:成员函数与非成员函数
- 更多constexpr容器是否需要mark_immutable_if_consexpr
- 在STL容器中使用模板类
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 检查函数返回类型是否与STL容器类型值相同
- STL算法函数在多个一维容器上的使用
- 如何将带有自定义对象的容器从C++传递到QML
- 在没有未定义行为的情况下实现类似std::vector的容器
- 将 BASE 派生类存储在同一容器中
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 在C++中迭代 2D 容器的最干净方法
- 将线程中的数据存储到全局容器的最佳方法?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 使用带有C++对象和标准库容器的插件系统
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 我可以用字符串变量而不是它的名字创建容器吗? C++