C++ 如何使用不同大小的向量初始化二维向量

C++ 如何使用不同大小的向量初始化二维向量,c++,optimization,vector,C++,Optimization,Vector,我希望用不同大小的向量初始化二维向量。二维向量中的向量数(双倍数)以及每个向量的大小都是已知的。我最初只是想将每个向量的大小放在一个单独的向量中,并使用for循环来初始化代码。然而,我发现这在运行时非常昂贵,并希望使用一种优化的方法 在头文件中,我已经为其他向量设置了许多大小,但似乎无法确定使用不同大小初始化向量的方法 std::vector<std::vector<double>> assetWeight = std::vector<std::vector<

我希望用不同大小的向量初始化二维向量。二维向量中的向量数(双倍数)以及每个向量的大小都是已知的。我最初只是想将每个向量的大小放在一个单独的向量中,并使用for循环来初始化代码。然而,我发现这在运行时非常昂贵,并希望使用一种优化的方法

在头文件中,我已经为其他向量设置了许多大小,但似乎无法确定使用不同大小初始化向量的方法

std::vector<std::vector<double>> assetWeight = std::vector<std::vector<double>>(10); //initialization of the 2-d vector
for(int i = 0; i < sectorNum; i++){
    assetWeight[i].resize(sectorSize[i]); 
} //current method of setting the individual vector sizes
std::vector assetWeight=std::vector(10)//二维向量的初始化
对于(int i=0;i
没有简单的答案。基本上,伊姆霍,你已经走上了正确的轨道。如果内部
std::vector
s具有相同的大小,则很容易:

vector< vector<double>> vector2D(ROWS, vector<double>(COLS));
还有很多


如果需要编译时操作,std::vector将无法工作。那么std::array可能是你的朋友。

你真的需要优化它吗?或者这是你想做的事情?为什么不直接用一维向量,把它解释成二维向量呢。它还可以从内存局部性中获益。
    std::vector<std::vector<double>> v1;
    v1.emplace_back(std::vector<double>(3));
    v1.emplace_back(std::vector<double>(4));
    v1.emplace_back(std::vector<double>(5));

    // or 
    std::vector<std::vector<double>> v2(3);
    v2[0].resize(3);
    v2[1].resize(4);
    v2[2].resize(5);