为什么我这个小程序会出现Segmentation fault?
Why I have a Segmentation fault in this small program?
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int main() {
map<int, int> score;
int n;
cin >> n;
while(n--){
int a,b;
cin >> a >> b;
score[a] = score[a] + b;
}
cout << score.rbegin()->first << " " << score.rbegin()->second << endl;
return 0;
}
错误信息是16254分段fault::11。退出码:139,请问为什么在使用地图容器时经常出现分段错误。
如果 n
是 0
,您永远不会填充 score
,然后您继续从 score
访问元素而不检查它是否为空。
一般来说,在使用迭代器之前一定要证明它是有效的。
#include<vector>
#include<algorithm>
#include<iostream>
using namespace std;
int main() {
map<int, int> score;
int n;
cin >> n;
while(n--){
int a,b;
cin >> a >> b;
score[a] = score[a] + b;
}
cout << score.rbegin()->first << " " << score.rbegin()->second << endl;
return 0;
}
错误信息是16254分段fault::11。退出码:139,请问为什么在使用地图容器时经常出现分段错误。
如果 n
是 0
,您永远不会填充 score
,然后您继续从 score
访问元素而不检查它是否为空。
一般来说,在使用迭代器之前一定要证明它是有效的。