Как удалить объект в a set

В моей программе на C ++ я создаю объекты в одной функции, используя new. Эти объекты вставляются в набор. Когда я хочу удалить объекты из набора, я использую итератор в цикле for. Когда я удаляю объект из набора, мне все равно нужно удалить объект, чтобы освободить его память, правильно? Я попытался использовать удаление, но затем получаю сообщение об ошибке, что освобождаемый указатель не был выделен. Итак, как это можно сделать?

Вот код, в котором я создаю объект, а затем вставляю его в набор

set <myObject> myobjectlist;
myObject *myobject = new myObject;
myobjectlist.insert(*myobject);

В другой функции я пытаюсь удалить объект из набора и освободить его память:

    for (set<myObject>::iterator i = myobjectlist.begin(); i != myobjectlist.end(); i++)
if (i->myObjectID == myObjectID)
{
    myobjectlist.erase(*i);
    delete &i;
    break;
}

] Это прекрасно работает без части «удалить». Я добавил его, потому что думал, что память объекта не освобождается.

10
задан Brian Tompsett - 汤莱恩 23 July 2015 в 15:03
поделиться