C++の連想配列クラスの宣言位置について教えて下さい。
趣味でC++を勉強中の初心者です。
連想配列クラス std::mapを利用した2つのコードについて、後者のみ(コンパイルは通るものの)実行時にSegmentation fault が発生しました。
連想配列クラスの宣言位置による違いと、後者がエラーになる理由を知りたいです。
エラーの発生しないコード
main関数の外側で連想配列クラスを宣言
C++
1#include <bits/stdc++.h> 2using namespace std; 3using ll = long long; 4map<int, int> mp[200010]; 5 6int main() 7{ 8 for(int i=0;i<10;++i){ 9 for(int j=0;j<10;++j){ 10 mp[i][j] = i*100+j; 11 } 12 } 13 14 for(int i=0;i<10;++i){ 15 for(int j=0;j<10;++j){ 16 cout << mp[i][j] << " "; 17 } 18 } 19}
エラーの発生するコード
main関数の内側で連想配列クラスを宣言
C++
1#include <bits/stdc++.h> 2using namespace std; 3using ll = long long; 4 5int main() 6{ 7 map<int, int> mp[200010]; 8 for(int i=0;i<10;++i){ 9 for(int j=0;j<10;++j){ 10 mp[i][j] = i*100+j; 11 } 12 } 13 14 for(int i=0;i<10;++i){ 15 for(int j=0;j<10;++j){ 16 cout << mp[i][j] << " "; 17 } 18 } 19}
補足情報
gcc version 7.4.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/30 11:23