C++ 多维向量如何在内部生长

C++ How does a multi-dimensional vector grow internally?

本文关键字:在内部 生长 向量 C++      更新时间:2023-10-16

考虑一个带有整数的二维向量,但最初只有一个元素:

std::vector< std::vector <int> > vec( 1, std::vector<int>( 1, 0 ) );

现在我想使两个维度的向量都更大,以便向量始终在 m x m 矩阵中产生结果。

以下两个命令会这样做吗:

vec.push_back( std::vector<int> );
vec[0].push_back( 0 );

还是只有第一行和第一列分别增加一个元素?

只有第一行会放大。向量全部组合在一起的事实并不会使它们一起放大。

如果要创建向量的向量,如果要增加每行的宽度,则需要增加每一行。

向量是一个单维容器 - 内容的细节是抽象的。这意味着,矢量应该对其内容一无所知。

std::vector< TYPE >

巧合的是,这意味着您可以使用一个也重载operator[]的子容器,但不要误认为vector本身支持 [][]。

std::vector< std::map< std::string, std::string > > foo;
foo[1]["hello"];

基本上是

std::map& fooMap = foo[1];
fooMap["hello"];

矢量没有特例