首页 > 解决方案 > 从向量中删除对象指针

问题描述

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

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

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

标签: c++vector

解决方案


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

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

std::vector<EWindow*> windows;

//...

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

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


推荐阅读