c++ - 删除向量 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;
}
解决方案
如果您在谈论vector::erase,那么它只是将空间右侧的元素向左移动 n 个元素,其中 n 是要删除的空间的大小,当然它会将大小更改为 n。
如果您在谈论std::remove,则可能存在实现,我将在此处描述其中一个:算法将满足条件的每个元素移动到相应位置,并擦除位于该位置的元素
推荐阅读
- python - 如何使用烧瓶形式获取 RadioField 的值?
- javascript - Simulate scroll over element in WebBrowser
- php - ArgumentCountError : 函数 phpunit 的参数太少
- javascript - 如何通过常规 HTML 表单发送图像 blob 数据以在 PHP 脚本中使用
- python - How to write function that takes in a string message and returns a list of string messages with pagination
- java - 服务器处于无限循环时更新文本字段时出错
- python - How do I fix the screen not being displayed after function?
- freemarker - 如何准确输出带有大括号和引号的字符串?
- python - Selecting an item from the dropdown menu of a list using Python + Selenium
- python - Recursion within a class in python