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

Algorithm

Boost , Chapter 1. Fusion 2.2 , Chapter 1. Fusion 2.2

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

Lazy Evaluation

ОтличиеMPLАлгоритмы Fusion ленивыи сохранение непоследовательности. Это по дизайну. Эффективность работы имеет высокий приоритет. Как иMPL, и в отличие отSTL, алгоритмы синтеза в основном функциональны по своей природе, так что алгоритмы не мутируют (без побочных эффектов). Однако из-за высокой стоимости возврата полных последовательностей, таких как векторы и списки,Просмотрывозвращаются из алгоритмов Fusion. Например,<transform>Алгоритм фактически не возвращает преобразованную версию исходной последовательности.<transform>возвращает<transform_view>. Эта точка зрения содержит ссылку на исходную последовательность плюс функцию преобразования. Итерация над<transform_view>будет применять функцию преобразования по отношению к элементам последовательности по требованию. Эта ленивая схема оценкипозволяет нам цеплять столько алгоритмов, сколько мы хотим, не подвергаясь высокому штрафу за время выполнения.

Sequence Extension

лениваясхема оценки, гдеалгоритмывозвращаютсяВидытакже позволяют таким операциям, как<push_back>, быть полностью общими. В Fusion<push_back>на самом деле является общим алгоритмом, который работает на всех последовательностях. Учитывая входную последовательность<s>и значение<x>, алгоритм Fusion<push_back>просто возвращает<joint_view>: Вид, который содержит ссылку на исходную последовательность<s>и значение<x>. Функции, которые когда-то были специфичны для последовательностей и должны быть реализованы N раз по N различных последовательностей, теперь реализованы только один раз. То есть, последовательности Fusion являются дешево расширяемыми.

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

Header

#include <boost/fusion/algorithm.hpp>
#include <boost/fusion/include/algorithm.hpp>


За исключением некоторых особых случаев, таких как<for_each>и<copy>, которые по своей сути являются императивными алгоритмами.

Что это значит? Это означает, что когда вы работаете с последовательностью с помощью алгоритма Fusion, который возвращает последовательность, возвращенная последовательность может быть не того же класса, что и оригинал.


PrevUpHomeNext

Статья Algorithm раздела Chapter 1. Fusion 2.2 Chapter 1. Fusion 2.2 может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 1. Fusion 2.2 ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 03:44:19/0.0039398670196533/0