C++:循环平移的实现
在很多场景中,需要将一个数组或字符串按照指定的位数进行循环平移,具体实现方法有很多种。下面是一种基于C++语言的实现方式:
#include <iostream>
#include <cstring>
void rotate(char* str, int shift) {
int len = strlen(str);
shift %= len;
if (shift == 0) {
return;
}
char tmp[shift];
memcpy(tmp, str + len - shift, shift * sizeof(char));
memmove(str + shift, str, (len - shift) * sizeof(char));
memcpy(str, tmp, shift * sizeof(char));
}
int main() {
char s[] = "abcdefg";
rotate(s, 3);
std::cout << s << std::endl;
return 0;
}
上面的代码中,函数rotate接收两个参数,第一个参数是需要进行平移的字符数组,第二个参数是需要平移的距离。函数内部使用了memcpy和memmove两个库函数来完成数据的复制和移动操作。当需要平移的位数为0时,直接返回原数组即可。在主函数中,我们定义了一个测试用的字符数组s,并调用
这篇博客介绍了如何在C++中实现数组的循环平移。通过使用memcpy和memmove函数,函数接受字符数组和平移位数作为参数,实现数据的复制和移动。示例代码展示了向右平移3位的过程,输出结果为"efgabcd"。
订阅专栏 解锁全文
516

被折叠的 条评论
为什么被折叠?



