从向量中删除对象指针

时间:2018-04-30 14:24:34

标签: c++ vector

我知道这篇文章可能会重复,但我能找到的答案并不清楚。

std::vector<EWindow> windows;
void closeWindow(EWindow* window);

这些是我的函数,我想从向量EWindow*中删除指针windows
C++ Remove object from vector解释了如何删除对象而不是指针。

1 个答案:

答案 0 :(得分:0)

但是你需要使用指针向量来移除指针。 std::vector<EWindow*> windows;删除指针的代码来自vector:

将您的向量声明为指针向量:

std::vector<EWindow*> windows;

//...

void closeWindow(EWindow* window)
{
    //...
    auto RemoveIt = std::find(windows.begin(),windows.end(), window);
    if ( RemoveIt != windows.end() )
    {
        windows.erase(RemoveIt);
    }
    //...
}

在向量中查找元素,然后将其从向量中删除(如果存在)