gpt4 book ai didi

c++ - 如何在C++中将数组向左或向右移动?

转载 作者:太空狗 更新时间:2023-10-29 19:40:28 24 4
gpt4 key购买 nike

我有一个数组 a[]={1,0,0,0,0}; 我想旋转它,让它像这样结束:a[] = {0,0,0,0,1};

如何将一个元素向左移动或向左移动多个元素?

#include<iostream.h>

int main ()
{
int temp,a[] = {1,0,0,0,0};
for(int i =0;i<=4;i++)
{
temp = a[0];
a[i] = a[i-1];
a[4] = temp;
cout << a[i];
}
system("pause");
return 0;
}

最佳答案

使用标准算法 std::rotate在 header 中声明 <algorithm>

例如

#include <iostream>
#include <algorithm>
#include <iterator>

int main()
{
int a[] = { 1, 0, 0, 0, 0 };
std::rotate( std::begin( a ), std::next( std::begin( a ) ), std::end( a ) );

for ( int x : a ) std::cout << x << ' ';
std::cout << std::endl;

return 0;
}

输出是

0 0 0 0 1

声明

    std::rotate( std::begin( a ), std::next( std::begin( a ) ), std::end( a ) );

可以写得更简单

    std::rotate( a, a + 1, a + 5 );

您还可以使用标准算法 std::rotate_copy如果你想让原始数组不变。

如果你的编译器不支持基于范围的for循环那么你可以这样写

for ( size_t i = 0; i < 5; i++ ) std::cout << a[i] << ' ';

关于c++ - 如何在C++中将数组向左或向右移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com