reverse() in C++ STL
In C++, the reverse() is a built-in function used to reverse the order of elements in the given range of elements. This range can be any STL container like vector or can be an array.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Reversing the vector
reverse(v.begin(), v.end());
for (int i : v) cout << i << " ";
return 0;
}
using namespace std;
int main() {
vector<int> v = {1, 2, 3, 4, 5};
// Reversing the vector
reverse(v.begin(), v.end());
for (int i : v) cout << i << " ";
return 0;
}
Output
5 4 3 2 1
Syntax of reverse()
The reverse() function is defined in the <algorithm> header file.
reverse(first, last);
Parameters:
- first: Iterator to the first element in the range.
- last: Iterator to the theoretical element just after the last element in the range.
Return Value:
- This function does not return any value. It reverses the range in-place.
Examples
Reversing an Array
The below examples show how to use the reverse() function to reverse variety of data containers.
#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// Reverse the array arr
reverse(arr, arr + n);
for (int i : arr) cout << i << " ";
return 0;
}
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// Reverse the array arr
reverse(arr, arr + n);
for (int i : arr) cout << i << " ";
return 0;
}
Output
5 4 3 2 1
Reverse a String
#include <bits/stdc++.h>
using namespace std;
int main() {
string s = "abcd";
// Reverse the string s
reverse(s.begin(), s.end());
cout << s;
return 0;
}
using namespace std;
int main() {
string s = "abcd";
// Reverse the string s
reverse(s.begin(), s.end());
cout << s;
return 0;
}
Output
dcba
Left Rotate a Vector using reverse()
The left rotation of a vector can be done by using reverse() three times on it.
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> v = {1, 3, 6, 2, 9};
int n = v.size();
int d = 2;
// Left rotate the vector by d place
reverse(v.begin(), v.begin() + d);
reverse(v.begin() + d, v.end());
reverse(v.begin(), v.end());
for (auto i : v)
cout << i << " ";
return 0;
}
using namespace std;
int main() {
vector<int> v = {1, 3, 6, 2, 9};
int n = v.size();
int d = 2;
// Left rotate the vector by d place
reverse(v.begin(), v.begin() + d);
reverse(v.begin() + d, v.end());
reverse(v.begin(), v.end());
for (auto i : v)
cout << i << " ";
return 0;
}
Output
6 2 9 1 3