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

Concepts

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 2. Boost String Algorithms Library

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

Concepts

Definitions

Table 2.13. Notation

F A type that is a model of Finder
Fmt A type that is a model of Formatter
Iter Iterator Type
f Object of type F
fmt Object of type Fmt
i,j Objects of type Iter

Finder Concept

Finder - это функтор, который ищет произвольную часть контейнера. Результат поиска приводится в виде iterator_range, разграничивающего выбранную часть.

Table 2.14. Valid Expressions

Expression Return Type Effects
f(i,j) Convertible to iterator_range<Iter> Perform the search on the interval [i,j) and returns the result of the search

Различные алгоритмы должны выполнять поиск в контейнере, а Finder - это обобщение таких поисковых операций, которое позволяет алгоритмам абстрагироваться от поиска. Например, общие алгоритмы замены могут заменить любую часть ввода, и Finder используется для выбора желаемой.

Обратите внимание, что отыскатель должен работать только с определенным типом итератора. Однако операция Finder может быть определена как шаблон, позволяющий Finder работать с любым итератором.

Examples

  • Finder реализован как класс. Этот Finder всегда возвращает весь вход в виде совпадения. оператор() является шаблонным, так что итератор можно использовать на любом типе итератора.
    struct simple_finder { template boost::iterator_range operator()(ForwardIteratorT Begin, ForwardIteratorT End) { return boost::make_range() Начало, конец; 
  • Функциональный искатель. Искателем может быть любой функциональный объект. То есть можно использовать и любую обычную функцию с требуемой подписью. Однако такая функция может использоваться только для конкретного типа итератора.
     boost::iterator_range simple_finder(std::string::const_iterator): Начало, std::string::const_iterator Конец) {повышение возврата::make_range() Начало, конец; 

Formatter concept

Используются алгоритмы replace. Они используются в тесном сочетании с находками. Форматтер — это функтор, который берет результат от операции Finder и преобразует его определенным образом. Операция форматировщика может использовать дополнительную информацию, предоставленную конкретным искателем, например regex_formatter() использует информацию соответствия от regex_finder() для форматирования результата работы форматировщика.

Table 2.15. Valid Expressions

Expression Return Type Effects
fmt(f(i,j)) A container type, accessible using container traits Formats the result of the finder operation

Подобно искателям, формататоры обобщают операции формата. Когда искатель используется для выбора части ввода, форматировщик принимает этот выбор и выполняет некоторое форматирование на нем. Алгоритмы могут абстрагироваться от форматирования с помощью форматтера.

Examples

  • Формат реализуется как класс. Этот Форматтер не выполняет никакого форматирования и возвращает матч, переупакованный. оператор() является шаблонным, так что Формат может быть использован на любом типе Finder.
    struct simple_formatter { template std::string operator()( const FindResultT& Match) { std::string Temp(Match.begin(), Match.end()); return Temp; } }; 
  • Функция Формат. Как и Finder, Formatter может быть любым функциональным объектом. Однако в качестве функции его можно использовать только с конкретным типом Finder.
     std::string simple_formatter( boost::iterator_range& Match ) { std::string Temp( Match.begin(), Match.end(); return Temp; } 


PrevUpHomeNext

Статья Concepts раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 2. Boost String Algorithms Library может быть полезна для разработчиков на c++ и boost.




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



:: Главная :: Chapter 2. Boost String Algorithms Library ::


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:51:49/0.0068099498748779/0