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

one*_*dan 0 c++ arrays

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

我有一个简单的循环来做到这一点:

for (size_t i = mSize; i > n; i--)
{
    mCont[i] = mCont[i - 1];
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望可以使用诸如memmove之类的东西来更快地做到这一点 - 但我不确定如何使用它 - 当容器的大小增加时.

谢谢你的时间.

Sla*_*ica 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 ) );
Run Code Online (Sandbox Code Playgroud)