#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
问题是您选择了错误的算法(摘自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