3

整数を持つ 2 次元ベクトルを考えますが、最初は要素が 1 つだけです。

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

ここで、ベクトルが常に amxm 行列になるように、両方の次元のベクトルを大きくしたいと考えています。

次の2つのコマンドはそれを行いますか:

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

または、最初の行とそれぞれ最初の列だけが要素だけ増加しますか?

4

3 に答える 3

1

ベクトルのベクトルを作成している場合、すべての行の幅を増やしたい場合は、すべての行を増やす必要があります....

于 2013-11-05T19:15:42.657 に答える
1

ベクトルは 1 次元のコンテナーです。内容の詳細は抽象化されています。つまり、ベクトルはその内容について何も知らないはずです。

std::vector< TYPE >

偶然にも、これは、オーバーロードも行うサブコンテナを使用できることを意味しますが、それ自体が [][] をサポートoperator[]していると誤解しないでください。vector

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

基本的に

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

ベクトルに特別なケースはありません

于 2013-11-05T20:14:49.703 に答える