是否有一种使用 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)
这是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)
与 不同的是memcpy,std::rotate_copy也适用于非连续容器和不可简单复制的类型的容器。
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |