Question #76524

Write a function reverse, that takes in a vector<T> and reverses the vector, i.e. modifies the input vector.

#include <vector>

using namespace std;

template <typename T>

void reverse(vector<T> v) {

//code..

}

Expert's answer



Using STL algorithms

#include <vector>
#include <algorithm>

using namespace std;

template <typename T>
void reverse(vector<T>& vec)
{
reverse(vec.begin(), vec.end());
}

int main()
{
vector<int> vec {1,2,3,4,5,6,7};
reverse(vec);

return 0;
}



Using iterators

#include <vector>

using namespace std;

template <typename T>
void reverse(vector<T>& vec)
{
auto beginIt = vec.begin();
auto endIt = --vec.end();
for(; beginIt < endIt; ++beginIt, --endIt)
{
T tmp = *beginIt;
*beginIt = *endIt;
*endIt = tmp;
}
}

int main()
{
vector<int> vec {1,2,3,4,5,6,7,8};
reverse(vec);

return 0;
}

Using iterator and std::swap

#include <vector>
#include <memory>

using namespace std;

template <typename T>
void reverse(vector<T>& vec)
{
auto beginIt = vec.begin();
auto endIt = --vec.end();
for (; beginIt < endIt; ++beginIt, --endIt)
{
std::swap(*beginIt, *endIt);
}
}

int main()
{
vector<int> vec{ 1,2,3,4,5,6,7 };
reverse(vec);

return 0;
}
LATEST TUTORIALS
APPROVED BY CLIENTS