当前位置: 首页 > 知识库问答 >
问题:

使用Rotate函数旋转完整的数组

司徒元明
2023-03-14
  #include<iostream>
  #include<algorithm>
  using namespace std;
  int main()
  {
      int arr[]={10,20,30,40,50};

      rotate(arr,arr+4,arr+1);
      int i;

      for(i=0; i<5; ++i)
      {
       cout<<arr[i]<<"  ";
      }
   }

通过运行上面的程序i得到的输出50 10 20 30 40,这是错误的,实际输出是50 40 30 20 10

共有1个答案

贺轶
2023-03-14

问题是您选择了错误的算法(摘自https://en.cppreference.com/w/,重点是我的):

具体来说,std::rotate以这样的方式交换范围[first,last)中的元素,即元素n_first成为新范围的第一个元素,而n_first-1成为最后一个元素。

您需要的是std::reverse(first,last),它

 类似资料:
  • 动画outputRotate Out Up LeftRotate InRotate Out Up RightRotate Out Up LeftRotate Out Up RightRotate OutRotate Out Up LeftRotate Out Up RightRotate Out Up LeftRotate Out Up Right

  • 我有一个int < code > 000000000000000000000000001101 ,它代表十进制的13。我试图通过将32位整数视为4位整数来循环旋转这些位,因为如果旋转整数,值会变得非常大。在上面的例子中,右旋转2后,我想要的答案是< code > 00000000000000000000000000111 ,它是以10为基数的7。 非常感谢对此的任何帮助。

  • 描述 (Description) 它提供移动或导致围绕轴或中心的圆圈移动。 语法 (Syntax) @keyframes rotateOutUpRight { 0% { transform-origin: right bottom; transform: rotate(0); opacity: 1; } 100% { transfo

  • 描述 (Description) 它提供移动或导致围绕轴或中心的圆圈移动。 语法 (Syntax) @keyframes rotateOutUpLeft { 0% { transform-origin: left bottom; transform: rotate(0); opacity: 1; } 100% { -tran

  • 描述 (Description) 它提供移动或导致围绕轴或中心的圆圈移动。 语法 (Syntax) @keyframes rotateOutDownRight { 0% { transform-origin: right bottom; transform: rotate(0); opacity: 1; } 100% { tran

  • 描述 (Description) 它提供移动或导致围绕轴或中心的圆圈移动。 语法 (Syntax) @keyframes rotateOutDownLeft { 0% { transform-origin: left bottom; transform: rotate(0); opacity: 1; } 100% { transfo