set miltiset удаление добавления
Написал код удаления-внесения элементов в сет, но после удаления первого элемента выдает ошибку, помогите понять, что не так
void Minimal(multiset<int>& mySet)
{
int temp3 = 0;
int temp4 = 0;
int temp5 = 0;
for (auto& item : mySet)
{
if (item < temp3)
{
temp3 = item;
}
}
cout << endl <<"Минимальное число = "<< temp3 << endl;
for (auto& item : mySet)
{
temp4 = item;
mySet.erase(temp4);
temp5 = temp4 - temp3;
mySet.insert(temp5);
}
cout << "==============================================================================" << endl;
cout << "Результат: ";
for (auto& item : mySet)
{
cout << item << " ";
}
cout << endl << "==============================================================================" << endl;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Так не хотите?
void Minus(multiset<int>& m)
{
if (m.empty()) return;
int min = *m.begin();
multiset<int> v;
for(int i: m) v.insert(v.end(),i-min);
m = v;
};
int main(int argc, const char * argv[])
{
multiset<int> m;
for(int i = 0; i < 20; ++i) m.insert(rand()%90+10);
for(int i: m) cout << i << " "; cout << endl;
Minus(m);
for(int i: m) cout << i << " "; cout << endl;
}