考虑一个带有整数的二维向量,但最初只有一个元素:
std::vector< std::vector <int> > vec( 1, std::vector<int>( 1, 0 ) );
现在我想让向量在两个维度上都更大,以便向量总是在 amxm 矩阵中产生。
以下两个命令是否会这样做:
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"];
向量没有特殊情况