![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Design TopicsBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 2. Boost String Algorithms Library
|
Trait | Description |
---|---|
has_native_replace<C> ::value |
Specifies that the sequence has std::string like replace method |
has_stable_iterators<C> ::value |
Specifies that the sequence has stable iterators. It means,
that operations like insert /erase /replace
do not invalidate iterators.
|
has_const_time_insert<C> ::value |
Specifies that the insert method of the sequence has constant time complexity. |
has_const_time_erase<C> ::value |
Specifies that the erase method of the sequence has constant time complexity |
Текущая реализация содержит специализации для std::list
Алгоритмы поиска имеют функциональность, аналогичную алгоритму<std::search()
>. Они обеспечивают другой интерфейс, который больше подходит для общих струнных операций. Вместо того, чтобы возвращать только начало соответствующей последовательности, они возвращают диапазон, который необходим, когда длина соответствующей последовательности не известна заранее. Эта функция также позволяет разделить входную последовательность на три части: префикс, подстроку и суффикс.
Еще одним отличием является добавление различных методов поиска помимо find_first, включая find_regex.
Это библиотека, алгоритмы поиска реализованы в терминахFinders. Искатели используются также другими объектами (заменой, разделением). Для удобства существуют также функциональные обертки для этих искателей, чтобы упростить операции поиска.
В настоящее время библиотека содержит только наивную реализацию алгоритмов поиска со сложностью O(n*m), где n — размер входной последовательности, а m — размер поисковой последовательности. Существуют алгоритмы со сложностью O(n), но для меньшей последовательности постоянные накладные расходы довольно велики. Для малых m<
Реализация алгоритмов замены следует многоуровневой структуре библиотеки. Нижний слой реализует родовое замещение диапазона во входной последовательности. Этот слой принимает объектFinderи объектFormatterв качестве входа. Эти два функтора определяют, что заменить и чем заменить. Функции верхнего слоя — это просто обертывание вызовов в нижний слой. Искатели делятся с объектом поиска и разделения.
Как обычно, реализация нижнего слоя предназначена для работы с общей последовательностью при использовании, если это возможно, специфических признаков (с использованиемпризнаков последовательности).
Итераторы поиска являются логическим продолжениемобъекта поиска. Вместо того, чтобы искать один матч, весь вход можно итеративно искать несколько матчей. Результат поиска затем используется для разделения входа. Это зависит от алгоритмов, какие части возвращаются в результате. Они могут быть соединены между собой<find_iterator
>частями<split_iterator
>.
Кроме того, алгоритмы разделения, такие как<find_all()
>и<split()
>, могут упростить общие операции. Они используют итератор поиска для поиска всего ввода и копирования совпадений, которые они нашли в поставляемом контейнере.
Библиотека требует, чтобы все операции по типам, используемым в качестве аргументов шаблона или функции, обеспечивалиосновную гарантию безопасности исключения. В свою очередь, все функции и алгоритмы в этой библиотеке, за исключением случаев, когда указано иное, обеспечатосновную гарантию безопасности исключения. Другими словами: Библиотека сохраняет свои инварианты и не утечка ресурсов перед лицом исключений. Некоторые библиотечные операции дают более сильные гарантии, которые документируются на индивидуальной основе.
Некоторые функции могут обеспечитьсильную гарантию безопасности исключения. Это означает, что следующие утверждения верны:
Эта гарантия может быть предоставлена при условии, что операции по типам, используемым для аргументации этих функций, либо обеспечивают сильную гарантию исключения, либо не изменяют глобальное государство.
В ссылке под терминомсильная гарантия безопасности исключениямы подразумеваем гарантию, как определено выше.
For more information about the exception safety topics, follow this link
Статья Design Topics раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 2. Boost String Algorithms Library может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 2. Boost String Algorithms Library ::
реклама |