是否存在“循环 memcpy”?

Jim*_*Jim 3 c++ memcpy

是否有一种使用 memcpy (或类似的)从一个循环数组复制到另一个循环数组的方法,但带有偏移量?我可以用循环来做,但我想做得更快更好。显然“循环”不是一个有记忆的东西,但我希望你明白我的意思。

大家干杯。

这就是我想要实现的目标,但不必使用 For;;循环

uint8_t array1[SIZE];
uint8_t array2[SIZE];

uint8_t offset = SOME_OFFSET;
uint8_t offsetAdj;

for (uint8_t index = 0; index < SIZE; index++)
{
    offsetAdj = offset + index;
   if (offsetAdj >= SIZE)
      offsetAdj -= SIZE;
   array2[offsetAdj] = array1[index];
}
Run Code Online (Sandbox Code Playgroud)

Dre*_*ann 7

这是std::rotate_copy您用代码实现的。

uint8_t array1[SIZE];
uint8_t array2[SIZE];
uint8_t offset = SOME_OFFSET;

std::rotate_copy( std::begin(array1),
                  std::begin(array1) + offset,
                  std::end  (array1),
                  std::begin(array2) );
Run Code Online (Sandbox Code Playgroud)

与 不同的是memcpystd::rotate_copy也适用于非连续容器和不可简单复制的类型的容器。