C++ 在c++;取整数数组(arr[])、其长度(N)和向右移位的元素数(M):?

C++ 在c++;取整数数组(arr[])、其长度(N)和向右移位的元素数(M):?,c++,arrays,integer,elements,C++,Arrays,Integer,Elements,如何完成代码以获取整数数组(arr[])、其长度(N)和向右移位的元素数(M) #包括 #包括 #包括 使用名称空间std; void-shiftright(int-myarray[],int-size); 内部主(空) { int myarray[]={1,2,3,4,5}; shiftright(myarray,5); 对于(int i=0;i

如何完成代码以获取整数数组(arr[])、其长度(N)和向右移位的元素数(M)

#包括
#包括
#包括
使用名称空间std;
void-shiftright(int-myarray[],int-size);
内部主(空)
{
int myarray[]={1,2,3,4,5};
shiftright(myarray,5);
对于(int i=0;i<5;i++)
{
cout=1;i--)
{
myarray[i]=myarray[i-1];
}
myarray[0]=温度;
}
}

看起来您正在尝试执行“旋转”操作。您是否考虑过创建一个带有偏移量的索引器,而实际上不必旋转任何东西?(这要便宜得多。)

无论如何,只需移除外环即可切换一次:

void shiftright (int myarray[], int size)
{
    int temp = myarray[size - 1];

    for (int i = (size - 1); i >= 1; i--)
    {
        myarray[i] = myarray[i - 1];
    }

    myarray[0] = temp;
}
现在,您可以创建另一种方法来移动
m
次:

void shiftright (int myarray[], int size, int m)
{
    for (int i = 0; i < m; i++)
    {
        shiftright(myarray, size);
    }
}
void-shiftright(int-myarray[],int-size,int-m)
{
for(int i=0;i

就性能而言,这显然是非常昂贵的,因此您可能想解释一下您需要它做什么。

不要自己滚动,只需使用标准算法即可

  if (m > 0 && size > 0)
      std::rotate(myarray, myarray + m % size, myarray + size);

这是一个非常低效的解决方案,但它(几乎)是一个解决方案。你为什么不把
M
用于anyrhing呢?你觉得缺少什么?请指出你遇到了什么问题。我的问题是它没有将整数向右移位。如果这段代码效率低下,那么我还有另一段代码,但我不确定它是否有任何作用。
  if (m > 0 && size > 0)
      std::rotate(myarray, myarray + m % size, myarray + size);