You mean apart from using the naked leaky new
, the deprecated char*
instead of const char*
or even better std::string
, not using a Standard Library algorithm std::reverse
, mixing IO with your algorithm and including the entire namespace std
(which might indirectly bring std::reverse()
into scope) without putting your own reverse()
inside its own namespace?
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
// using namespace std; // for the brave, and drop the std:: in the next 3 lines
int main()
{
std::string str = "hello world"; // std::string instead of char*
std::reverse(begin(str), end(str)); // standard library algorithm
std::cout << str; // IO separate from algorithm
}
If you are only interested in how to code a reverse algorithm, here is one way to do it without relying on the fact that you have a null terminator:
template<class BidirIt>
void reverse(BidirIt first, BidirIt last)
{
while ((first != last) && (first != --last)) {
std::swap(*first++, *last);
}
}