質問: vector 2次元配列で任意の縦列にpush_backできますか? ``` vector v; v.at(5).push_back("test"); ``` vectorで宣言したvの5行目の0番地目に”test”という文字列を代入したかったので、このようなプログラムを実行してみたところ、次のようなエラーが発生しました。 ``` [bcc32c エラー] Unit2.cpp(44): cannot initialize a parameter of type 'char' with an lvalue of type 'const char [5]' xstring(1899): passing argument to parameter '_Ch' here ```
回答: `vector` は二次元配列ではないし `vector::push_back()` は「新たな要素を末尾に追加する」のであって、任意の場所に追加するわけではないので、 答えは **できません** なわけですが > > vectorで宣言したvの5行目の0番地目 > > > という文言から見ると `vector` が何をどう保持しているのか理解不足のように思われます。特に 0番地目 なる文言が意味不明。やりたいことは単に ``` v[4]="test"; // あるいは v[4]=string("test"); なり v.at(4)="test"; ``` で良いのではないっすか? `v[5]` だと要素は6番目っす。もし仮に `v[4]` がまだ無いのであれば事前に `v.resize(5);` なりなんなりが必要。 真にやりたいことが @nordsynth 氏自身よくわかっていないに1票。