Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Other Algorithms

Boost , The Boost Algorithm Library , The Boost Algorithm Library

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Файл заголовка clamp.hpp содержит две функции для «зажима» значения между парой граничных значений.

clamp

Функция<clamp(v,lo,hi)>возвращается:

  • Если v<
  • hi if hi< v
  • в противном случае v

Примечание: использование<clamp>с числами с плавающей запятой может дать неожиданные результаты, если одно из значений<NaN>.

Существует также версия, которая позволяет абоненту указать сравнительный предикат для использования вместо<operator<>.

template<typename T>
const T& clamp ( const T& val, const T& lo, const T& hi );
template<typename T, typename Pred>
const T& clamp ( const T& val, const T& lo, const T& hi, Pred p );

Следующий код:

int foo = 23;
foo = clamp ( foo, 1, 10 );

Оставит<foo>со значением 10

Сложность:<clamp>сделает один или два вызова предикату сравнения, прежде чем вернуть один из трех параметров.

clamp_range

Есть также четыре версии зажима на основе диапазона, которые применяют зажим к ряду значений. Вы можете написать их сами с помощью std::transform и bind, как это:<std::transform(first,last,out,bind (clamp (_1,lo, hi)))>, но они предоставляются здесь для вашего удобства.

template<typename InputIterator, typename OutputIterator>
OutputIterator clamp_range ( InputIterator first, InputIterator last, OutputIterator out,
    typename std::iterator_traits<InputIterator>::value_type lo,
    typename std::iterator_traits<InputIterator>::value_type hi );
template<typename Range, typename OutputIterator>
OutputIterator clamp_range ( const Range &r, OutputIterator out,
	typename std::iterator_traits<typename boost::range_iterator<const Range>::type>::value_type lo,
	typename std::iterator_traits<typename boost::range_iterator<const Range>::type>::value_type hi );
template<typename InputIterator, typename OutputIterator, typename Pred>
OutputIterator clamp_range ( InputIterator first, InputIterator last, OutputIterator out,
    typename std::iterator_traits<InputIterator>::value_type lo,
    typename std::iterator_traits<InputIterator>::value_type hi, Pred p );
template<typename Range, typename OutputIterator, typename Pred>
OutputIterator clamp_range ( const Range &r, OutputIterator out,
	typename std::iterator_traits<typename boost::range_iterator<const Range>::type>::value_type lo,
	typename std::iterator_traits<typename boost::range_iterator<const Range>::type>::value_type hi,
	Pred p );


PrevUpHomeNext

Статья Other Algorithms раздела The Boost Algorithm Library The Boost Algorithm Library может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: The Boost Algorithm Library ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 20:09:32/0.0085210800170898/1