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

Compile time min/max calculation

Boost , Boost.Integer , Boost.Integer

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

Шаблоны классов вдать оценку минимального или максимального числа двух целых чисел. Эти средства полезны для общих проблем программирования.

namespace boost
{
typedef implementation-defined static_min_max_signed_type;
typedef implementation-defined static_min_max_unsigned_type;
template <static_min_max_signed_type Value1, static_min_max_signed_type Value2 >
    struct static_signed_min;
template <static_min_max_signed_type Value1, static_min_max_signed_type Value2>
    struct static_signed_max;
template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
    struct static_unsigned_min;
template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Value2>
    struct static_unsigned_max;
}

Четыре шаблона классов обеспечивают комбинации для нахождения минимального или максимального из двух<signed>или<unsigned>(<long>) параметров.Значение1иЗначение2, в срок. Каждый шаблон имеет один статический элемент данных<value>, который устанавливается на соответствующий минимум или максимум параметров шаблона.

#include <boost/integer/static_min_max.hpp>
template < unsigned long AddendSize1, unsigned long AddendSize2 >
class adder
{
public:
    static  unsigned long  const  addend1_size = AddendSize1;
    static  unsigned long  const  addend2_size = AddendSize2;
    static  unsigned long  const  sum_size = boost::static_unsigned_max<AddendSize1, AddendSize2>::value + 1;
    typedef int  addend1_type[ addend1_size ];
    typedef int  addend2_type[ addend2_size ];
    typedef int  sum_type[ sum_size ];
    void  operator ()( addend1_type const &a1, addend2_type const &a2, sum_type &s ) const;
};
//...
int main()
{
    int const   a1[] = { 0, 4, 3 };  // 340
    int const   a2[] = { 9, 8 };     //  89
    int         s[ 4 ];
    adder<3,2>  obj;
    obj( a1, a2, s );  // 's' should be 429 or { 9, 2, 4, 0 }
    //...
}

Программаstatic_min_max_test.cppпредставляет собой упрощенную демонстрацию различных сравнений с использованием шаблонов класса экстрема компиляции-времени.

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

Автор шаблонов класса extrema по времени компиляции BoostДэрил Уокер.


PrevUpHomeNext

Статья Compile time min/max calculation раздела Boost.Integer Boost.Integer может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Boost.Integer ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 12:34:45/0.0018410682678223/0