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

Sequence Generator (a << b)

Boost , Spirit 2.5.2 , Generator Operators

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

Генераторы последовательно объединяют различные, более примитивные генераторы. Все генераторы в последовательности вызываются слева направо, пока они успешны.

Header
// forwards to <boost/spirit/home/karma/operator/sequence.hpp>
#include <boost/spirit/include/karma_sequence.hpp>

См. такжеВключить структуру.

Model of

Expression Semantics

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

выражение

Семантика

<a<< b>

Важно отметить, что последовательности не выполняют никакой буферизации вывода, генерируемого его элементами. Это означает, что любая неисправная последовательность может уже генерировать некоторый выход, которыйнеоткатился назад.

[Tip]Tip

Самый простой способ заставить последовательность вести себя так, как если бы она буферизовала, - это завернуть ее в буферную директиву (см.<buffer>):

buffer[a << b << c]

нене будет производить никакого вывода в случае неудачной последовательности.

Attributes

См.Комплектная нотация.

выражение

атрибут

a << b (последовательность)

a: A, b: B --> (a << b): tuple<A, B>
a: A, b: Unused --> (a << b): A
a: Unused, b: B --> (a << b): B
a: Unused, b: Unused --> (a << b): Unused
a: A, b: A --> (a << b): vector<A>
a: vector<A>, b: A --> (a << b): vector<A>
a: A, b: vector<A> --> (a << b): vector<A>
a: vector<A>, b: vector<A> --> (a << b): vector<A>

[Important]Important

В таблице выше используются<tuple<A,B>>и<vector<A>>только в качестве заполнителей.

Нотация<tuple<A,B>>означаетлюбую последовательность слияния двух элементов, где<A>является типом его первого элемента и<B>является типом его второго элемента.

<vector<A>>означаетлюбой контейнер STL, содержащий элементы типа<A>.

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

Complexity

Общая сложность генератора последовательностей определяется суммой сложностей его элементов. Сложность самой последовательности — O(N), где N — число элементов в последовательности.

Example
[Note]Note

Тестовый ремень для примера (примеров) ниже представлен в разделеОсновные примеры.

Некоторые включают:

#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::double_;

Основное использование последовательности:

test_generator_attr("1.0,2.0", double_ << ',' << double_, std::make_pair(1.0, 2.0));


PrevUpHomeNext

Статья Sequence Generator (a << b) раздела Spirit 2.5.2 Generator Operators может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Generator Operators ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 03:35:41/0.0062019824981689/1