例如,我在C ++中有一个动态数组,它类似于std::vector
。实现erase
函数时,这是最好的方法,还是有更好的方法呢?
void erase(iterator it)
{
my_array<template_argument> x;
for(iterator i = begin(); i != end(); ++i)
{
if(i == it)
{
continue;
}
x.push(*i);
}
*this = x;
}
最佳答案
您可以执行就地删除,而不是为几乎整个阵列制作新副本。
for(iterator i = it; i+1 != end(); ++i)
{
*i = *(i+1); // or std::iter_swap(i, i+1); if swapping is more efficient
}
pop();
关于c++ - 有没有更好的方法来删除动态数组元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21833413/