例如,我在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/

10-10 13:33