为什么我在这个小程序中有分段错误?

时间:2015-02-23 15:49:56

标签: c++ c++11 segmentation-fault

#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分段错误:: 11。退出代码:139。请问为什么在使用地图容器时经常发生分段错误。

1 个答案:

答案 0 :(得分:2)

如果n0,则您永远不会填充score,然后继续从score访问元素,而不检查它是否为空。

通常,在使用它之前,始终要证明迭代器是有效的。