On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 21.08.19 21:26. Заголовок: Как проверить, является объект класса std::stack палиндромом или нет, не изменяя сам объект?


Недавно встретил такой вопрос: как проверить, является ли содержимое объекта класса std::stack палиндромом или нет, не изменяя при этом сам объект.

То есть делать такие операции со стеком, как pop или push, не разрешается.

Выполнить эту задачу можно, создав "обертку" для класса std::stack.

Ниже представлена соответствующая демонстрационная программа.

 
#include <iostream>
#include <iomanip>
#include <stack>
#include <iterator>
#include <algorithm>

bool is_palindrome( const std::stack<int> &st )
{
struct wrapper : std::stack<int>
{
wrapper( const std::stack<int> &st ) : std::stack<int>( st ) {}

bool is_palindrome() const
{
return std::equal( std::begin( c ), std::next( std::begin( c ), c.size() / 2 ),
std::rbegin( c ) );
}
} w( st );


return w.is_palindrome();
}

int main()
{
std::stack<int> st1( std::stack<int>::container_type{ 1, 2, 3, 2, 1 } );

std::cout << std::boolalpha << is_palindrome( st1 ) << '\n';

std::stack<int> st2( std::stack<int>::container_type{ 1, 2, 3, 4, 5 } );

std::cout << std::boolalpha << is_palindrome( st2 ) << '\n';

return 0;
}

Вывод программы на консоль
 
true
false


Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет