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;
}