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;

}
→ Ссылка