Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> boost::bind - для двух предикатов 
V
    Опции темы
mes
Дата 20.12.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



действительно, хорошо бы иметь шаблон предиката для стл, алгоритмов, разгружающий бинд..
только он должен быть простым предикатом, а не and_pred.. 

a боост::лямбду тоже запретили ?


--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 20.12.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  20.12.2010,  21:43 Найти цитируемый пост)
a боост::лямбду тоже запретили ?

в этой теме, мне действительно интересно реализация этого без лямбды.


Добавлено через 1 минуту и 26 секунд
Цитата(mes @  20.12.2010,  21:43 Найти цитируемый пост)
он должен быть простым предикатом, а не and_pred

что именно в "and_pred" не нравится?
PM WWW   Вверх
mes
Дата 20.12.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  20.12.2010,  20:48 Найти цитируемый пост)
что именно в "and_pred" не нравится? 

префикс "and" который заставляет изготавливать несколько однообразных предикатов.. 

сейчас попробую наваять как я себе представляю.. 



--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 20.12.2010, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  20.12.2010,  21:53 Найти цитируемый пост)
префикс "and"

ааа.. так он появился из-за моей задачи smile 
а в идеале, да, должен еще и логический предикат указываться. хотя..группа предикатов and_*, or_* тоже бы облегчила понимание.
PM WWW   Вверх
mes
Дата 20.12.2010, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



вот грубый набросок: http://liveworkspace.org/code/d649be290aaa...b02824b4353dffa
чтоб выглядило прилично, нужно поднапрячься.. но неохота.. главное смысл понятен,
как получать композиционный отложенный предикат.. 
 smile  



--------------------
PM MAIL WWW   Вверх
Earnest
Дата 21.12.2010, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(boostcoder @  20.12.2010,  21:05 Найти цитируемый пост)
не понял.. это намек на что-то личное? 

Почему сразу личное? Это я про программирование вообще. Не только бустом можно код зашифровать.
И я вовсе не против алгоритмов и предикатов. Если код с алгоритмом-предикатом-байндом выглядит ясно, то здорово. Просто не надо это самоцелью делать.



--------------------
...
PM   Вверх
boostcoder
Дата 21.12.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Earnest @  21.12.2010,  11:09 Найти цитируемый пост)
Не только бустом можно код зашифровать.

 smile 

Цитата(Earnest @  21.12.2010,  11:09 Найти цитируемый пост)
Просто не надо это самоцелью делать.

так нет же. цель - улучшить стиль. подглядывание стиля из буста, очень помогает.
PM WWW   Вверх
Earnest
Дата 21.12.2010, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



 А навеяно вот чем:
слишком много усилий тратится на то, чтобы придумать супер-шаблон, в который можно запихать 2 или больше предиката, да чтобы все это еще хорошо выглядело... Как академическая, задачка интересная, да. Но на практике... какой алгоритм (я имею в виду обработку каких-нибудь данных, практичную) за это время можно было бы написать... 
Короче, время на заточку лопаты нужно разумно регулировать. Туда ведь не только время, но и мозговая энергия уходит...
Работодатель тебе за что платит-то? Ведь не за байндеры хитрые?


--------------------
...
PM   Вверх
boostcoder
Дата 21.12.2010, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(Earnest @  21.12.2010,  11:14 Найти цитируемый пост)
Но на практике... какой алгоритм (я имею в виду обработку каких-нибудь данных, практичную) за это время можно было бы написать...

шаблон пишется один раз. вставляется в какой-нибудь utils.hpp, и используется во всем проекте.
нет, конечно, если в задаче использование этого шаблона происходит все раз - то разрабатывать его нет смысла.
но после того, как он уже разработан, скопипастить его много времени не занимает.

Это сообщение отредактировал(а) boostcoder - 21.12.2010, 11:21
PM WWW   Вверх
null56
Дата 10.1.2011, 01:37 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 2
Всего: 12



немного с опозданием, но пускай останется для истории
бустовский bind поддерживает логические операции, что позволяет избавиться от одного уровня с logical_and
Цитата

Overloaded operators (new in Boost 1.33)
For convenience, the function objects produced by bind overload the logical not operator ! and the relational and logical operators ==, !=, <, <=, >, >=, &&, ||.

вместо
Код

 std::copy_if(iv.begin(), iv.end(), std::back_inserter(iv2), bind(std::logical_and<bool>(), std::bind(_pred1, std::placeholders::_1) , std::bind(_pred2, std::placeholders::_1 ) ) );

можно короче
Код

std::copy_if(iv.begin(), iv.end(), std::back_inserter(iv2), boost :: bind(_pred1, _1) && boost :: bind(_pred2, _1));


Это сообщение отредактировал(а) null56 - 10.1.2011, 01:38
PM MAIL   Вверх
boostcoder
Дата 10.1.2011, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(null56 @  10.1.2011,  01:37 Найти цитируемый пост)
бустовский bind поддерживает логические операции

это я знал, т.к. регулярно использую operator!() с баиндами. но мне и в голову не пришло что можно таким образом комбинировать функциональные объекты...
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.