C++98 二维数组指定行循环移位实现方案
C++98环境下指定行循环移位实现方案
首先明确目标移位的实际逻辑:对照给定的初始数组和目标数组差异,仅需对行索引为2(0基计数的第三行)执行循环右移1位操作,其余行元素完全保持不变,即可匹配期望的结果。
无标准库依赖的手动实现(100%兼容所有C++98编译环境)
该方案不依赖任何标准库算法,直接通过内存修改完成移位,无额外编译依赖:
- 暂存目标行的最后一个元素值:
int tmp = mat[2][3]; - 将目标行的前3个元素从后往前逐位向右偏移1位:
for (int i = 3; i > 0; i--) { mat[2][i] = mat[2][i-1]; } - 将暂存的行尾元素放到目标行行首:
mat[2][0] = tmp;
基于C++98标准库算法的简洁实现
C++98标准库早已内置std::rotate循环移位算法,可直接调用完成相同效果,无需手写循环:
- 引入头文件:
#include <algorithm> - 直接对目标行的连续内存区间执行右移1位的循环操作:
std::rotate(mat[2], mat[2] + 3, mat[2] + 4);
注意:上述所有实现均为直接修改原二维数组的内存值,不需要额外打印操作,执行完成后原数组即可达到目标状态。
内容的提问来源于stack exchange,提问作者newDev2000
相关产品推荐
相关产品推荐

