In: Computer Science
c++ code
Reverse the order of elements in a vector of integers using two functions:
(a) The first function takes the input vector a and return a vector b with the input data but in the reverse order, e.g. input: 1, 2, 3 and output 3, 2, 1.
(b) The second function is a recursive one and it reverses the input data in place (without using an additional vector).
#include <iostream> #include <vector> using namespace std; /** * * @param vec vector to reverse elements. This vector remains unchanged * @return reverse of vector */ vector<int> reverseReturn(const vector<int> &vec) { vector<int> result; for(int i = vec.size()-1; i >= 0; --i) { result.push_back(vec[i]); } return result; } /** * changes the parameter vector to hold the reverse of elements * @param vec */ void reverse(vector<int> &vec) { int temp; for(int i = 0; i < vec.size()/2; ++i) { temp = vec[i]; vec[i] = vec[vec.size()-i-1]; vec[vec.size()-i-1] = temp; } } void print(vector<int> v) { for(int i = 0; i < v.size(); ++i) { cout << v[i] << " "; } cout << endl; } int main() { vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); cout << "Original vector: "; print(v); reverse(v); cout << "Reverse vector: "; print(v); cout << "Reverse of reversed vector: "; vector<int> v1 = reverseReturn(v); print(v1); return 0; }