Обзор библиотеки Boost — различия между версиями
Материал из SEWiki
Строка 24: | Строка 24: | ||
* Удаление пробельных символов в начале и в конце строки <code>trim_left[_if](input [, predicate])</code>, <code>trim_right[_if](input[, predicate]</code> и <code>trim[_if](input[, predicate])</code>. | * Удаление пробельных символов в начале и в конце строки <code>trim_left[_if](input [, predicate])</code>, <code>trim_right[_if](input[, predicate]</code> и <code>trim[_if](input[, predicate])</code>. | ||
* Предикаты: <code>[i]strarts_with(range1, range2 [, comp])</code>, <code>[i]ends_with(range1, range2 [, comp])</code>, <code>[i]contains(range1, range2 [, comp])</code>, <code>[i]equals(range1, range2 [, comp])</code>, <code>[i]lexicographical_compare(range1, range2 [, comp])</code>. | * Предикаты: <code>[i]strarts_with(range1, range2 [, comp])</code>, <code>[i]ends_with(range1, range2 [, comp])</code>, <code>[i]contains(range1, range2 [, comp])</code>, <code>[i]equals(range1, range2 [, comp])</code>, <code>[i]lexicographical_compare(range1, range2 [, comp])</code>. | ||
+ | * Алгоритмы поиска: <code>[i]find_first(input, search)</code>, <code>[i]find_last(input, search)</code>, <code>[i]find_nth(input, search)</code>, <code>[i]find_regex(input, regex)</code>. | ||
+ | * Алгоритмы замены: <code>[i][replace|erase]_first(input, search [, format])</code>, <code>[i][replace|erase]_last(input, search [, format])</code>, <code>[i][replace|erase]_nth(input, search [, format])</code>, <code>[i][replace|erase]_regex(input, regex [,format])</code>. | ||
+ | * <code>split[_regex](result, input [, predicate | regex])</code> и <code>join(input, separator)</code>. | ||
+ | * Функторы-классификаторы символов | ||
+ | |||
+ | Существуют версии этих алгоритмов с суффиксом <code>_copy</code>, которые выполняют те же действия над копией входной строки и возвращают ее. | ||
+ | |||
+ | == Итераторы == |
Версия 12:23, 31 мая 2011
Мы рассмотрим несколько полезных модулей библиотеки Boost,
Умные указатели
Все рассмотренные в прошлом семестре <<умные> указатели представлены в библиотеке Boost.
-
scoped_ptr
иscoped_array
, -
shared_ptr
иshared_array
, -
weak_ptr
--- ссылка на объект, который находится под управлениемshared_ptr
. Следует отметить, что через этот указатель нельзя обратиться к объекту напрямую --- можно только создатьshared_ptr
, указывающий на этот объект, с помощью методаlock()
--- если объект уже уничтожен, то возвращается пустойshared_ptr
. -
intrusive_ptr<T>
--- аналогshared_ptr<T>
; требует, чтобы у типаT
были определены методы intrusive_ptr_add_ref() и intrusive_ptr_release(). Уintrusive_ptr
, по крайней мере, два преимущества передshared_ptr
:- размер объекта
intrusive_ptr
совпадает с размером указателя, - объекта
intrusive_ptr<T>
можно проинициализировать от произвольногоT*
.
- размер объекта
Версия <<умного>> указателя с суффиксом _array
управляет временем жизни массива, а не
отдельного объекта
Строковые алгоритмы
Строковые алгоритмы Boost являются обобщением и расширением методов строковых классов STL и алгоритмов STL, предназначенных для работы с последовательностями.
- Преобразование регистра:
to_upper(input)
иto_lower(iput)
. - Удаление пробельных символов в начале и в конце строки
trim_left[_if](input [, predicate])
,trim_right[_if](input[, predicate]
иtrim[_if](input[, predicate])
. - Предикаты:
[i]strarts_with(range1, range2 [, comp])
,[i]ends_with(range1, range2 [, comp])
,[i]contains(range1, range2 [, comp])
,[i]equals(range1, range2 [, comp])
,[i]lexicographical_compare(range1, range2 [, comp])
. - Алгоритмы поиска:
[i]find_first(input, search)
,[i]find_last(input, search)
,[i]find_nth(input, search)
,[i]find_regex(input, regex)
. - Алгоритмы замены:
[i][replace|erase]_first(input, search [, format])
,[i][replace|erase]_last(input, search [, format])
,[i][replace|erase]_nth(input, search [, format])
,[i][replace|erase]_regex(input, regex [,format])
. -
split[_regex](result, input [, predicate | regex])
иjoin(input, separator)
. - Функторы-классификаторы символов
Существуют версии этих алгоритмов с суффиксом _copy
, которые выполняют те же действия над копией входной строки и возвращают ее.