![](/img/trans.png)
[英]How to initialize a 2d Vector with different sizes for the row and the column in C++?
[英]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.