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

cpp_int

Boost , Chapter 1. Boost.Multiprecision , Reference

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{ namespace multiprecision{
typedef unspecified-type limb_type;
enum cpp_integer_type    { signed_magnitude, unsigned_magnitude };
enum cpp_int_check_type  { checked, unchecked };
template <unsigned MinDigits = 0,
          unsigned MaxDits = 0,
          cpp_integer_type SignType = signed_magnitude,
          cpp_int_check_type Checked = unchecked,
          class Allocator = std::allocator<limb_type> >
class cpp_int_backend;
//
// Expression templates default to et_off if there is no allocator:
//
template <unsigned MinDigits, unsigned MaxDigits, cpp_integer_type SignType, cpp_int_check_type Checked>
struct expression_template_default<cpp_int_backend<MinDigits, MaxDigits, SignType, Checked, void> >
{ static const expression_template_option value = et_off; };
typedef number<cpp_int_backend<> >              cpp_int;    // arbitrary precision integer
typedef rational_adaptor<cpp_int_backend<> >    cpp_rational_backend;
typedef number<cpp_rational_backend>            cpp_rational; // arbitrary precision rational number
// Fixed precision unsigned types:
typedef number<cpp_int_backend<128, 128, unsigned_magnitude, unchecked, void> >   uint128_t;
typedef number<cpp_int_backend<256, 256, unsigned_magnitude, unchecked, void> >   uint256_t;
typedef number<cpp_int_backend<512, 512, unsigned_magnitude, unchecked, void> >   uint512_t;
typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, unchecked, void> > uint1024_t;
// Fixed precision signed types:
typedef number<cpp_int_backend<128, 128, signed_magnitude, unchecked, void> >     int128_t;
typedef number<cpp_int_backend<256, 256, signed_magnitude, unchecked, void> >     int256_t;
typedef number<cpp_int_backend<512, 512, signed_magnitude, unchecked, void> >     int512_t;
typedef number<cpp_int_backend<1024, 1024, signed_magnitude, unchecked, void> >   int1024_t;
// Over again, but with checking enabled this time:
typedef number<cpp_int_backend<0, 0, signed_magnitude, checked> >                 checked_cpp_int;
typedef rational_adaptor<cpp_int_backend<0, 0, signed_magnitude, checked> >       checked_cpp_rational_backend;
typedef number<checked_cpp_rational_backend>                                      checked_cpp_rational;
// Checked fixed precision unsigned types:
typedef number<cpp_int_backend<128, 128, unsigned_magnitude, checked, void> >     checked_uint128_t;
typedef number<cpp_int_backend<256, 256, unsigned_magnitude, checked, void> >     checked_uint256_t;
typedef number<cpp_int_backend<512, 512, unsigned_magnitude, checked, void> >     checked_uint512_t;
typedef number<cpp_int_backend<1024, 1024, unsigned_magnitude, checked, void> >   checked_uint1024_t;
// Fixed precision signed types:
typedef number<cpp_int_backend<128, 128, signed_magnitude, checked, void> >       checked_int128_t;
typedef number<cpp_int_backend<256, 256, signed_magnitude, checked, void> >       checked_int256_t;
typedef number<cpp_int_backend<512, 512, signed_magnitude, checked, void> >       checked_int512_t;
typedef number<cpp_int_backend<1024, 1024, signed_magnitude, checked, void> >     checked_int1024_t;
}} // namespaces

Шаблон класса<cpp_int_backend>соответствует всем требованиям для типаBackend. Его члены и функции, не являющиеся членами, намеренно не документируются: они считаются деталями реализации, которые могут быть изменены.

Аргументы шаблона:

MinBits

Определяет количество битов для хранения непосредственно внутри объекта, прежде чем прибегнуть к динамическому выделению памяти. При нуле это поле определяется автоматически на основе того, сколько битов может храниться в союзе с динамическим заголовком хранилища: установка большего значения может улучшить производительность, поскольку большие целые значения будут храниться внутри до того, как потребуется выделение памяти.

MaxBits

Определяет максимальное количество битов, подлежащих хранению в типе: в результате получается фиксированный тип точности. Когда это значение такое же, как у MinBits, то параметр Allocator игнорируется, так как никакого динамического выделения памяти никогда не будет выполнено: в этой ситуации параметр Allocator должен быть настроен на тип<void>. Обратите внимание, что этот параметр не должен использоваться просто для предотвращения больших выделений памяти, не только потому, что роль лучше выполняется распределителем, но и фиксированные целые числа имеют тенденцию выделять все MaxBits памяти чаще, чем можно было бы ожидать.

SignType

Определяет, подписан ли полученный тип или нет. Обратите внимание, что длятипов произвольной точностиэтот параметр должен быть<signed_magnitude>. Для фиксированных типов точности этот тип может быть либо<signed_magnitude>, либо<unsigned_magnitude>.

Checked

Этот параметр имеет два значения:<checked>или<unchecked>. См.учебникдля получения дополнительной информации.

Allocator

Распределитель для использования для динамического распределения памяти, или тип<void>, если MaxBits == MinBits.

<number_category<cpp_int<Args...>>::type>— это<mpl::int_<number_kind_integer>>.

Более подробную информацию об этом типе можно найти вучебнике.


PrevUpHomeNext

Статья cpp_int раздела Chapter 1. Boost.Multiprecision Reference может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Reference ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:10:05/0.0069839954376221/0