C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
Q&A
解決済
4回答
29407閲覧
総合スコア65
0グッド
1クリップ
投稿2019/01/12 06:13
0
1
c++のvector配列で、
c++1vector<vector<int>>a;
c++
1vector<vector<int>>a;
を作成したときに、
c++1a[0].push_back(0)
1a[0].push_back(0)
とすると、 というエラーが出てしまうのですが、どうしたらよいでしょうか。 ご回答よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答4件
a が空なので、a[0] は範囲外だというエラーです。
サイズを1以上にしてください。例えば、
c++1vector<vector<int>> a(1);
1vector<vector<int>> a(1);
他には
c++1vector<vector<int>> a; 2a.push_back(vector<int>());
1vector<vector<int>> a; 2a.push_back(vector<int>());
c++1vector<vector<int>> a; 2a.emplace_back();
1vector<vector<int>> a; 2a.emplace_back();
など、方法はたくさんあります。お好きなものを使ってください。
投稿2019/01/12 06:37
総合スコア1459
vector<vector<int>> a;
この時点でaは空なんだから a[0]は存在しない。
C++1 vector<vector<int>> a; 2 a.emplace_back(); // 空のvector<int> を一個追加し、 3 a[0].push_back(0); // そいつにint要素を一個追加。
C++
1 vector<vector<int>> a; 2 a.emplace_back(); // 空のvector<int> を一個追加し、 3 a[0].push_back(0); // そいつにint要素を一個追加。
投稿2019/01/12 13:35
総合スコア16612
ベストアンサー
本質とは関係ありませんが、>>と書くとビットシフト演算記号と被るのでスペースを入れる必要があります。
最近のコンパイラは対応してくれるんですねOTL 書いてから確認したら余計なことでした。参考までに。
投稿2019/01/13 14:36
総合スコア4853
回答へのコメント
2019/01/26 09:24
2019/01/26 09:46
すでに適切な回答がありますので、蛇足ですが
C++1 std::vector<std::vector<int>> a; 2 a.push_back(std::vector<int>({ 0, 1, 2, 3 }));
1 std::vector<std::vector<int>> a; 2 a.push_back(std::vector<int>({ 0, 1, 2, 3 }));
などという方法もあります。
投稿2019/01/13 04:27
総合スコア986
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.31%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
vector二次元配列のpush_backについて
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。