If is not a constraint, use std::set
#include<set>
....
std::set<string> s
for(int i = 0; i < n; i++)
{
cout << "Enter name " << i << ": ";
std::string name;
std::getline (std::cin, name);
s.insert(name);
}
for(std::set<string>::iterator it = s.begin(); it != s.end(); it++)
cout<< *it<< endl;
for(auto n: s)
cout<< *n<< endl;
for(std::set<string>::reverse_iterator it = s.rbegin(); it != s.rend(); it++)
cout<< *it<< endl;
The values in set are unique. You can use multiset if you don't require elements to be unique.