首页 > 解决方案 > 构造二维数组向量的好方法

问题描述

我想做的是

double A[2][2] = { 
                      {4, 7},
                      {2, 6}
                 };
std::vector<double[2][2]> B; 
for (int i = 1; i <= 5; i++)
{
  B.push_back(A);
}
        

但是 C++ 不能在 std::vector 中存储一个数组,这样做的正确(速度)方法是什么?A[2][2]std::array缓存一致性更快吗?

标签: c++

解决方案


std::array可能是去这里的最佳方式。它应该与您拥有的 C 样式数组几乎完全相同:

#include <array>
#include <vector>

int main() {
    using Array2d = std::array<std::array<double, 2>, 2>;

    Array2d A = {{{4, 7}, {2, 6}}};
    std::vector<Array2d> B; 
    for (int i = 1; i <= 5; i++) {
        B.push_back(A);
    }
}

推荐阅读