60881


vector 2次元配列で任意の縦列にpush_backできますか？

[code]

    vector<string> v;
    
    v.at(5).push_back("test");
    
[/code]

vectorで宣言したvの5行目の0番地目に”test”という文字列を代入したかったので、このようなプログラムを実行してみたところ、次のようなエラーが発生しました。

[code]

    [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
    
[/code]


CC BY-SA 4.0
2019-11-27T04:53:16.513
60878
2019-11-27T05:40:54.123
2019-11-27T05:09:59.433
35993
35993
question
c++ rad-studio
vector 2次元配列で任意の行にpush_backできますか？


`vector<string>` は二次元配列ではないし  
`vector::push_back()` は「新たな要素を末尾に追加する」のであって、任意の場所に追加するわけではないので、

答えは **できません** なわけですが

> vectorで宣言したvの5行目の0番地目

という文言から見ると `vector<string>` が何をどう保持しているのか理解不足のように思われます。特に 0番地目
なる文言が意味不明。やりたいことは単に

[code]

    v[4]="test"; // あるいは v[4]=string("test"); なり v.at(4)="test";
    
[/code]

で良いのではないっすか？ `v[5]` だと要素は６番目っす。もし仮に `v[4]` がまだ無いのであれば事前に `v.resize(5);`
なりなんなりが必要。

真にやりたいことが @nordsynth 氏自身よくわかっていないに１票。


CC BY-SA 4.0
2019-11-27T05:40:54.123
60881
2019-11-27T05:40:54.123
8589
60878
answer