首页 > 解决方案 > 删除向量 c++ 的函数

问题描述

我对向量的 remove() 函数有疑问。

当我试图在我自己的向量类中实现它时。我想知道删除功能是如何工作的。

该函数实际上如何从向量中删除元素?移除后,向量是否会缩小创建的差距?

编辑我相信我已经得到了代码,感谢您的帮助!

template<class T>
bool MyVector<T>::RemoveAt(int i)
{
    if(i>=0 && i<count)
    {
        for(int x=i;x<count;x++)
        {
            arr[x] = arr[x+1];
        }
        pop_back();
        return true;
    }
    return false;
}

标签: c++

解决方案


如果您在谈论vector::erase,那么它只是将空间右侧的元素向左移动 n 个元素,其中 n 是要删除的空间的大小,当然它会将大小更改为 n。

如果您在谈论std::remove,则可能存在实现,我将在此处描述其中一个:算法将满足条件的每个元素移动到相应位置,并擦除位于该位置的元素


推荐阅读