| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Проверка значения контейнера на попадание в зада - |
| Автор: np9mi7 5.3.2006, 15:46 | ||
| Добрый день! Задача: проверить значение контейнера на попадание в заданный интервал; Решение: воспользоваться стандартными std::less & std::greater. В итоге имеем код:
Недостатки решения: требуется два прохода по контейнеру; Вопрос: Как используя СТАНДАРТНЫЕ (написание функтора не предлагать) средства, проверить попадание значений элементов контейнера в заданный интервал, исключая повторный проход? Заранее благодарен за ответы. |
| Автор: bel_nikita 5.3.2006, 15:57 | ||
Не совсем "въехал" в вопрос
|
| Автор: np9mi7 5.3.2006, 16:05 | ||||
|
| Автор: bel_nikita 5.3.2006, 16:36 |
| Так найди min и max значение в контейнере и сравни с интервалом. Если min и max попадают [1, 10], то и сам контейнер "попадает" в интервал [1, 10] |
| Автор: Void 5.3.2006, 17:31 | ||
| bel_nikita, это опять-таки не укладывается в один проход, если использовать только стандартные алгоритмы и функторы. Долго пытался сообразить, как соорудить необходимый предикат из bind'еров и logical_and, в конце-концов оставил это бесполезное занятие. Такое выражение все равно по объему будет больше, и читаться будет хуже, чем написанный по месту применения простой функтор, вроде
Если хочется изящества, можно использовать Boost.Lambda. Прошу прощения за не несущий полезной информации для автора пост |