Rotate in C++ STL

05 Jun, 2022
The function is defined in header <algorithm>. It rotates the order of the elements in the range [first, last], in such a way that the element pointed by the middle becomes the new first element. Function Template :
void rotate(ForwardIterator first, ForwardIterator middle, ForwardIterator last) first, last : Forward Iterators to the initial and final positions of the sequence to be rotated middle : Forward Iterator pointing to the element within the range [first, last] that is moved to the first position in the range.
Types of Rotations
Left Rotation: To rotate left, we need to add the vector index. For example, you have to rotate the vector left 3 times. The 3rd index of the vector becomes the first element. vec.begin() + 3 will rotate vector 3 times left.Right Rotation: To rotate right, we need to subtract the vector index. For example, you have to rotate the vector right 3 times. The 3th last index of the vector becomes the first element. vec.begin()+vec.size()-3 will rotate vector 3 times right.
Left Rotation: To rotate left, we need to add the vector index. For example, you have to rotate the vector left 3 times. The 3rd index of the vector becomes the first element. vec.begin() + 3 will rotate vector 3 times left.
Right Rotation: To rotate right, we need to subtract the vector index. For example, you have to rotate the vector right 3 times. The 3th last index of the vector becomes the first element. vec.begin()+vec.size()-3 will rotate vector 3 times right.
Examples:
Input : 1 2 3 4 5 6 7 8 9Output :Old vector : 1 2 3 4 5 6 7 8 9New vector : 4 5 6 7 8 9 1 2 3 // Rotated at 3th position, starting index as 0.
Input : 8 2 4 6 11 0 15 8Output :Old vector : 8 2 4 6 11 0 15 8New vector : 0 15 8 8 2 4 6 11 //Rotated at 5th position, starting index as 0.
C++
// CPP program to rotate vector// using rotate algorithm #include<bits/stdc++.h>using namespace std; int main () {    vector<int> vec1{1,2,3,4,5,6,7,8,9};     // Print old vector    cout << "Old vector :";    for(int i=0; i < vec1.size(); i++)        cout << " " << vec1[i];    cout << "\n";    // Rotate vector left 3 times.    int rotL=3;     // rotate function    rotate(vec1.begin(), vec1.begin()+rotL, vec1.end());     // Print new vector    cout << "New vector after left rotation :";    for (int i=0; i < vec1.size(); i++)        cout<<" "<<vec1[i];    cout << "\n\n";     vector <int> vec2{1,2,3,4,5,6,7,8,9};     // Print old vector    cout << "Old vector :";    for (int i=0; i < vec2.size(); i++)        cout << " " << vec2[i];    cout << "\n";     // Rotate vector right 4 times.    int rotR = 4;     // rotate function    rotate(vec2.begin(), vec2.begin()+vec2.size()-rotR, vec2.end());     // Print new vector    cout << "New vector after right rotation :";    for (int i=0; i < vec2.size(); i++)        cout << " " << vec2[i];    cout << "\n"; return 0;}
Old vector : 1 2 3 4 5 6 7 8 9
New vector after left rotation : 4 5 6 7 8 9 1 2 3

Old vector : 1 2 3 4 5 6 7 8 9
New vector after right rotation : 6 7 8 9 1 2 3 4 5

Riya_19
MeghaKakkar
harendrakumar123
cpp-algorithm-library
STL
C++
STL
CPP
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Set in C++ Standard Template Library (STL)
vector erase() and clear() in C++
unordered_map in C++ STL
Priority Queue in C++ Standard Template Library (STL)
Substring in C++
C++ Classes and Objects
Sorting a vector in C++
Virtual Function in C++
C++ Data Types
Templates in C++ with Examples