初心者の質問で恐縮なのですが、
次のようなコードのとき、
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 3) >= this->size() (which is 3)
とエラーが出ます。
調べてみた所配列の範囲外を参照しているという事だったので、
デバッガーで調べた所map_data.at(2).at(1)のデータまで無事に代入出来ていました。
(その後エラーで終了していました)
C++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 int n,m; 6 7 //n=3 m=3を代入 8 cin >> n >> m; 9 10 vector<string> map(3); 11 vector<vector<char>> map_data(3, vector<char>(3)); 12 13 for (int i = 0; i < n; i++) 14 { 15 cin >> map.at(i); 16 } 17 18 for (int i = 0; i < n; i++) 19 { 20 for (int j = 0; j < m; j++) 21 { 22 map_data.at(i).at(j) = map.at(i).at(j); 23 } 24 } 25 26 for (int i = 0; i < n; i++) 27 { 28 for (int j = 0; j < m; i++) 29 { 30 cout << map_data.at(i).at(j); 31 } 32 } 33}
入力
3 3
hog
hog
hog
期待出力
hog
hog
hog
範囲外を参照しているとは思えないのですが、
一体なぜこのコードでエラーになるのか分からないため質問させていただきます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/06 10:39