try the following
template<typename T>
bool Palindrome( const std::vector<T> &word )
{
typename std::vector<T>::const_iterator start = word.begin();
typename std::vector<T>::const_iterator end = word.end();
for ( ; start < word.begin() + word.size() / 2; ++start )
{
if ( *start != *--end ) return false;
}
return true;
}
Here is a test
#include <iostream>
#include <iomanip>
#include <vector>
template<typename T>
bool Palindrome( const std::vector<T> &word )
{
typename std::vector<T>::const_iterator start = word.begin();
typename std::vector<T>::const_iterator end = word.end();
for ( ; start < word.begin() + word.size() / 2; ++start )
{
if ( *start != *--end ) return false;
}
return true;
}
int main()
{
std::vector<int> v = { 1, 2, 1 };
std::cout << std::boolalpha << Palindrome( v ) << std::endl;
v = { 1, 2, 3 };
std::cout << std::boolalpha << Palindrome( v ) << std::endl;
v = { 1, 2, 2, 1 };
std::cout << std::boolalpha << Palindrome( v ) << std::endl;
return 0;
}
The output is
true
false
true