如果使用remove_if和items是指向对象的指针,如何删除向量中的项?

Jor*_*dan 1 c++ memory-leaks vector erase remove-if

我担心通过执行以下操作会遇到内存泄漏问题:

(示例代码)

class myItem //random container stuff mostly. All primatives.
{
    int index;
    char* name;
    int val1;
    int val2;
};

class vecList
{

    vector< myitem* > *myVec;

    void delete()
    { 
        MyVec->erase(std::remove_if(myVec->begin(), MyVec->end(), IsMarkedToDelete), MyVec->end()); //leak here?
    }
};
Run Code Online (Sandbox Code Playgroud)

如果它是一个指针,擦除不释放内存,对吗?如果我没有使用remove_if,我可以在销毁之前调用指针上的delete.在这种情况下我该怎么做?智能指针?我不想用它们重新实现所有内容,我真的不想添加boost库.

谢谢!

Xeo*_*Xeo 8

您可以在IsMarkedToDelete函数返回true时删除该函数.