如何在数组中向左旋转元素?

ron*_*man 2 c++

我正在尝试向左旋转数组,例如rotateLeft3([1,2,3])→[2,3,1]

这是我的解决方案,但由于某种原因它不起作用.有人可以解释一下我做错了什么吗?

#include <iostream>

using namespace std;

int main()
{
    bool six;
    int Array[3] = { 1,2,3 };
    int x = sizeof(Array) / sizeof(Array[0]);
    int temp = Array[0];
    int temp2;
    for (int i = 0; i < x; i++)
    {
        Array[i] = Array[i + 1];
        Array[x - 1] = temp;
    }
    for (int i = 0; i < 3; i++)
    {
        cout << Array[i] << endl;
    }
    system("pause");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

sin*_*ren 5

这将是正确的方法.因此,在代码中进行以下更改:
1)将循环条件更改为结束(x-1)(否则它将超出范围)
2)删除循环内的临时分配
3)循环结束后分配值.

int temp = Array[0];
for (int i = 0; i < x-1; i++){
    Array[i] = Array[i + 1];
}
Array[x-1] = temp;
Run Code Online (Sandbox Code Playgroud)

或者
如果你想使用内置模板,那么在算法标题中使用std :: rotate