c++ - 如果使用 remove_if 并且项目是指向对象的指针,如何删除 vector 中的项目?

标签 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?
    }
};

如果它是指针,删除不会释放内存,对吧?如果我不使用 remove_if,我可以在销毁指针之前调用 delete。在这种情况下我该怎么做?智能指针?我不想用它们重新实现所有内容,也不想添加 boost 库。

谢谢!

最佳答案

您可以在 IsMarkedToDelete 函数返回 true 时删除该项目。

关于c++ - 如果使用 remove_if 并且项目是指向对象的指针,如何删除 vector 中的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7968018/

相关文章:

C++ 为什么 const LPSTR 与 const char * 不同?

php - 内存之外的图像干预 - laravel

r - 将向量添加到数据框的列

c++ - 具有非静态 lambda 成员的类不能使用默认模板参数?

c++ - C/C++ : Taking the address of a function imported from a shared library

c++ - 微妙的内存泄漏,这是常见的做法吗?

r - 两个数字向量上的全对全 setdiff 具有用于接受匹配的数字阈值

java - 无法从 vector 得到矩阵

c++ - 邪恶的 Actor 会被邪恶的编译器击败吗?

c++ - 当堆分配的构造函数参数抛出 C++