-3
#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 segmentation fault :: 11. Код выхода: 139. И не могли бы вы объяснить, почему при использовании контейнера карты часто возникала ошибка сегментации.Почему у меня есть ошибка сегментации в этой небольшой программе?
Какой вклад вы используете для запуска программы? –
Оценка 'score [a]' дважды, безусловно, неэффективна, и я не уверен на 100%, что она хорошо определена (хотя я уверен, что есть достаточно последовательности, чтобы уйти от нее). Я бы написал «score [a] + = b;' –
@MikeSeymour Не стандартно ли гарантировать, что для присваивания сначала будет оцениваться rhs? Возможно, я читаю это неправильно, но вот что я нашел: «Побочный эффект (модификация левого аргумента) встроенного оператора присваивания и всех встроенных операторов присваивания упорядочен после вычисления значения (но а не побочные эффекты) как левого, так и правого аргументов, и секвенируется перед вычислением значения выражения присваивания (то есть перед возвратом ссылки на модифицированный объект) « –