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

Unsigned Integer Number Generators (uint_, etc.)

Boost , Spirit 2.5.2 , Numeric Generators

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
Description

Класс uint_generator является самым простым среди членов пакета цифр. uint_generator может генерировать неподписанные целые числа произвольной длины и размера. Генератор uint_generator может быть использован для создания обычных примитивных C/C++ целых чисел или даже определенных пользователем скаляров, таких как bigints (неограниченные наборы точности), если тип следует определенным требованиям экспрессии (более подробную информацию о требованиях см. низкий). uint_generator - это класс шаблонов. Параметры шаблона тонко настраивают его поведение.

Header
// forwards to <boost/spirit/home/karma/numeric/uint.hpp>
#include <boost/spirit/include/karma_uint.hpp>

Также см. Include Structure.

Namespace

Имя

boost::spirit::lit // alias: rise::spirit::karma::lit

boost::spirit::bin // alias: rise::spirit::karma::bin

boost::spirit::окт /в частности: импульс::дух::karma::окт

boost::spirit::hex // alias: boost::spirit::karma::hex

boost::spirit::ushort_ // alias: rise::spirit::karma::ushort_

boost::spirit::ulong_ // alias: rise::spirit::karma::ulong_<314>

boost::spirit::uint_ // alias: rise::cpirit::karma::uint_

boost::spirit::

[Note]Note

Генераторы ulong_long и ulong_long(num) доступны только на платформах, где препроцессорная постоянная BOOST_HAS_LONG_LONG определяется (т.е. на платформах с поддержкой unsigned longlong (64 бит) неподписанные типы целых чисел).

[Note]Note

lit повторно используется String Generators, Character Generators и Numeric Generators. В целом, хар-генератор создается, когда вы проходите в символе, создается струнный генератор, когда вы проходите в строке, и цифровой генератор создается, когда вы используете числовую буквальную цифру.

Synopsis
template <
    typename Num
  , unsigned Radix>
struct uint_generator;
Template parameters

Параметр

Описание

По умолчанию

Num

Числовой базовый тип числового генератора.

неподписано int

Radix

База радикса. Это может быть любое значение в (инклюзивном) диапазоне от 2 .. 36.

10

Model of

Notation

num

Численное буквальное, любое неподписанное целое значение, или Последний аргумент Num

Num

Тип num: любой неподписанный целочисленный тип, или в случае Данные аргументы, его значение возврата

Radix

Цифровый литр, указывающий требуемый радикс для преобразования вывода. 2.36.

Expression Semantics

Семантика выражения определяется только там, где она отличается от или не определяется в PrimitiveGenerator.

Выражение

Семантика

lit(num)

Создайте неподписанную буквальную цифру num, используя форматирование по умолчанию (radix - 10). Этот генератор никогда не терпит неудачу (если основной поток вывода не сообщает об ошибке).

ushort_
uint_
ulong_
ulong_long

Создайте неподписанное целое число, предоставляемое обязательным атрибутом с использованием форматирования по умолчанию (radix - 10). Этот генератор никогда не терпит неудачу (если основной поток вывода не сообщает об ошибке).

ushort_(num)
uint_(num)
ulong_(num)
ulong_long(num)

Создайте неподписанное целое число, обеспечиваемое непосредственным буквальным значением, которое генератор инициализируется с использованием форматирования по умолчанию (radix - 10). Если этот генератор имеет ассоциированный атрибут, он преуспевает только в том случае, если атрибут равен непосредственному буквальному (если только основной поток вывода не сообщает об ошибке). В противном случае этот генератор терпит неудачу и не генерирует никакого вывода.

bin
oct
hex

Создайте неподписанное целое число, обеспечиваемое обязательным атрибутом, используя форматирование по умолчанию и соответствующий радикс (bin: радикс 2, oct: радикс 8, hex: радикс 16<34>. Этот генератор никогда не терпит неудачу (если основной поток вывода не сообщает об ошибке).

bin(num)
oct(num)
hex(num)

Создайте неподписанное целое число, обеспечиваемое непосредственным буквальным значением, генератор инициализируется с использованием форматирования по умолчанию и соответствующего радикса (bin: радикс 2, oct: радикс 8, hex: радикс 16. Если этот генератор имеет ассоциированный атрибут, он преуспевает только в том случае, если атрибут равен непосредственному буквальному (если только основной поток вывода не сообщает об ошибке). В противном случае этот генератор терпит неудачу и не генерирует никакого вывода.

Все генераторы, перечисленные в таблице выше (за исключением lit(num)) являются предопределенными специализациями uint_generator<Num, Radix> основной неподписанный тип генератора целых чисел описан ниже. Можно напрямую использовать этот тип для создания неподписанных целых генераторов с использованием широкого спектра вариантов форматирования.

Выражение

Семантика

uint_generator<
    Num, Radix
>()

Создайте неподписанное целое число типа Num, предоставляемое обязательным атрибутом с использованием указанного Radix (позволенные значения от (включительно) варьируются от 2 .. 36, значение по умолчанию 10. Этот генератор никогда не терпит неудачу (если основной поток вывода не сообщает об ошибке).

uint_generator<
    Num, Radix
>()(num)

Создайте неподписанное целое число типа Num, обеспечиваемое непосредственным литературным значением, из которого инициализируется генератор, используя указанное значение Radix (полные значения от (включительно) диапазона от 2 .. 36, значение по умолчанию 10. Если этот генератор имеет ассоциированный атрибут, он преуспевает только в том случае, если атрибут равен непосредственному буквальному (если только основной поток вывода не сообщает об ошибке). В противном случае этот генератор терпит неудачу и не генерирует никакого вывода.

Additional Requirements

uint_generator<Num, Radix>. .

Если boost::is_integral<Num>:: value является True тип Num должен был определить:

  • для сравнения: <, <=, ==, >!=, >, и >=
  • числовые операторы для: +, -, /, *, и %

Если boost::is_integral<Num>:: value является false ТипNum

  • для сравнения: <, <=, ==, >!=, >, и >=
  • числовые операторы для: +, -, /, *, и %
  • функции помощника, реализующие интерфейс и семантику: std::fmod, std::pow, std::lround, st><>>>>>> Они должны быть определены таким образом, чтобы их можно было найти с помощью аргументированного зависимого поиска (ADL).
Attributes

Выражение

Attribute

lit(num)

неиспользуется

ushort_

неподписанный короткий, атрибут является обязательным (в противном случае сборник потерпит неудачу)

ushort_(num)

unsigned short, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с num и преуспевает только в том случае, если оба равны, в противном случае.

uint_

неподписан int, атрибут является обязательным (в противном случае сборник потерпит неудачу)

uint_(num)

unsigned int, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с num и преуспевает только в том случае, если оба равны, в противном случае.

ulong_

неподписан long, атрибут является обязательным (в противном случае компиляция потерпит неудачу)

ulong_(num)

unsigned long, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с num и преуспевает только в том случае, если оба равны, в противном случае.

ulong_long

неподписан long long, атрибут является обязательным (в противном случае сборник потерпит неудачу)

ulong_long(num)

unsigned long long, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с num и преуспевает только в том случае, если оба равны, не в противном случае.

bin
oct
hex

неподписан int, атрибут является обязательным (в противном случае сборник потерпит неудачу)

bin(num)
oct(num)
hex(num)

unsigned int, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с num и преуспевает только в том случае, если оба равны, в противном случае.

uint_generator<
    Num, Radix
>()

Num, атрибут является обязательным (в противном случае сборник потерпит неудачу)

uint_generator<
    Num, Radix
>()(num)

Num, атрибут является необязательным, если он поставляется, генератор сравнивает атрибут с num и преуспевает только в том случае, если оба равны, не в противном случае.

[Note]Note

В дополнение к их обычному атрибуту типа Num все перечисленные генераторы принимают экземпляр boost::факультативно<Num>. Если boost::факультативно< инициализируется (оставляет значение) генераторы ведут себя так, как будто их атрибут был экземпляром Num и испускают значение, хранящееся в boost::факультативно<>. Иначе генераторы потерпят неудачу.

Complexity

O(N), где N - это количество цифр, необходимых для представления сгенерированного целого числа

Example
[Note]Note

Испытательный узел для примера (примеров) ниже представлен в разделе Basics examples.

Некоторые из них включают:

#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/support_utree.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/fusion/include/std_pair.hpp>
#include <iostream>
#include <string>

Некоторые используют заявления:

using boost::spirit::karma::uint_;
using boost::spirit::karma::lit;

Основное использование генератора uint:

test_generator("2", lit(2U));
test_generator("2", uint_(2));
test_generator_attr("2", uint_(2), 2);
test_generator_attr("", uint_(2), 3);    // fails (as 2 != 3)!
test_generator_attr("2", uint_, 2);


PrevUpHomeNext

Статья Unsigned Integer Number Generators (uint_, etc.) раздела Spirit 2.5.2 Numeric Generators может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Numeric Generators ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 21:10:37/0.032302141189575/1