Clarification for the 3. task
You do not have to implement the functions as templates (we have not discussed templates yet). Instead, you can
define the return type of the functions like this:
typedef int T; // define 'T' to mean 'int'
vector<T> reverse(/* argument list not shown here */) // 'reverse' is defined to return 'vector<int>'
{
...