std::copy_if(words.begin(), words.end(),
std::back_inserter(palindromes),
[](const std::string& str)
{ return std::equal(str.begin(), str.endbegin() + str.size() / 2, str.rbegin()); });
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
int main()
{
const std::size_t TotalWords = 3;
std::vector<std::string> words;
words.reserve(TotalWords);
std::cout << "Please enter some words." << std::endl;
std::istream_iterator<std::string> in(std::cin);
std::copy_n(in, TotalWords, std::back_inserter(words));
std::vector<std::string> palindromes;
std::copy_if(words.begin(), words.end(),
std::back_inserter(palindromes),
[](const std::string& str)
{ return std::equal(str.begin(), str.endbegin()+str.size()/2, str.rbegin()); });
if (palindromes.empty())
{
std::cout << "No palindromes were given" << std::endl;
}
else
{
auto longest = std::max_element(palindromes.begin(), palindromes.end());
std::ostream_iterator<std::string> out(std::cout, "\n");
std::copy(palindromes.begin(), palindromes.end(), out);
std::cout << "Longest: " << *longest << std::endl;
}
}