使用C ++等效的memmove向右移动数组元素

时间:2015-11-10 20:58:49

标签: c++ arrays

出于学习目的,我正在创建一个容器,它基于一个具有类似地图功能的数组。每次我插入一个键,我想保持数组的顺序。我已经实现了函数来查找键应该在数组索引中的位置,我目前唯一的问题是有效地移动数组元素。

我有一个简单的循环来执行此操作:

for (size_t i = mSize; i > n; i--)
{
    mCont[i] = mCont[i - 1];
}

但是,我希望可以使用memmove这样的东西来更快地做到这一点 - 但我不知道如何使用它 - 当容器的大小增加时。

感谢您的时间。

1 个答案:

答案 0 :(得分:5)

您可以使用std::move_backward

std::move_backward( std::next( std::begin( mCont ), n ), 
                    std::next( std::begin( mCont ), mSize - 1 ),
                    std::next( std::begin( mCont ), mSize ) );