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

The MPL Reference Manual: Reversible Algorithm

Boost , ,

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

Front Page / Algorithms / Concepts / Reversible Algorithm

Reversible Algorithm

Description

А.Обратимый алгоритмявляется членом пары алгоритмов преобразования, которые итерируют свою входную последовательность (последовательности) в противоположных направлениях. Для каждого обратимого алгоритмахСуществуетаналогалгоритмreverse_x, который показывает точную семантикух, за исключением того, что элементы его аргумента(ов) входной последовательности обрабатываются в обратном порядке.

Expression requirements

В следующей таблице и последующих спецификацияхxявляется токеном-заполнителем для фактическогоОбратимого алгоритма's имени,s1,s2, ...snявляютсяПередняя последовательностьs, ивявляетсяInserter.

Expression Type Complexity
x<s1,s2, ...sn, ...>::type Последовательность Не уточняется.
x<s1,s2, ...sn, ...in>::type Любой тип Не уточняется.
reverse_x<s1,s2, ...sn, ...>::type Последовательность Не уточняется.
reverse_x<s1,s2, ...sn, ...in>::type Любой тип Не уточняется.

Expression semantics

typedef x<s1,s2,...sn,...>::type t;
Precondition:

s1 is an Extensible Sequence.

Semantics:

t is equivalent to

x<
      s1,s2,...sn,...
    , back_inserter< clear<s1>::type >
    >::type

еслиимеет_push_back<s1>::значение==истиннои

reverse_x<
      s1,s2,...sn,...
    , front_inserter< clear<s1>::type >
    >::type

otherwise.

typedef x<s1,s2,...sn,...in>::type t;
Semantics:t is the result of an x invocation with arguments s1,s2,... sn,...in.
typedef reverse_x<s1,s2,... sn,... >::type t;
Precondition:

s1 is an Extensible Sequence.

Semantics:

t is equivalent to

x<
      s1,s2,...sn,...
    , front_inserter< clear<s1>::type >
    >::type

еслиимеет_push_front<s1>::значение==истиннои

reverse_x<
      s1,s2,...sn,...
    , back_inserter< clear<s1>::type >
    >::type

otherwise.

typedef reverse_x<s1,s2,...sn,... in>::type t;
Semantics:t is the result of a reverse_x invocation with arguments s1,s2,...sn,...in.

Example

typedef transform<
      range_c<int,0,10>
    , plus<_1,int_<7> >
    , back_inserter< vector0<> >
    >::type r1;
typedef transform< r1, minus<_1,int_<2> > >::type r2;
typedef reverse_transform<
      r2
    , minus<_1,5>
    , front_inserter< vector0<> >
    >::type r3;
BOOST_MPL_ASSERT(( equal<r1, range_c<int,7,17> > ));
BOOST_MPL_ASSERT(( equal<r2, range_c<int,5,15> > ));
BOOST_MPL_ASSERT(( equal<r3, range_c<int,0,10> > ));

Статья The MPL Reference Manual: Reversible Algorithm раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

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