繁体   English   中英

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

[英]How to initialize a 2-d vector with vectors of different sizes

我正在寻找使用大小不同的向量初始化二维向量。 二维向量中向量的数量(双精度)以及每个向量的大小是已知的。 最初,我只是想将每个向量的大小放在一个单独的向量中,然后使用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具有相同的大小,则很容易:

vector< vector<double>> vector2D(ROWS, vector<double>(COLS));

但是,如果要设置不同的大小,则需要指定这些大小。 这将在运行时使用std::vector 有很多方法可以做到这一点,例如,在for循环中调整大小或显式调整大小或将内部std::vector放回原处。

查看2种可能的解决方案:

    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);

还有更多。

如果要进行编译时操作,则std :: vector将不起作用。 然后std :: array也许是你的朋友。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM