Обзор библиотеки Boost — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
Строка 17: Строка 17:
  
 
== Строковые алгоритмы ==
 
== Строковые алгоритмы ==
 +
 +
[http://www.boost.org/doc/libs/1_46_1/doc/html/string_algo/quickref.html Строковые алгоритмы] Boost являются
 +
обобщением и расширением методов строковых классов STL и алгоритмов STL, предназначенных для работы с последовательностями.
 +
 +
* Преобразование регистра: <code>to_upper(input)</code> и <code>to_lower(iput)</code>.
 +
* Удаление пробельных символов в начале и в конце строки <code>trim_left[_if](input [, predicate])</code>, <code>trim_right[_if](input[, predicate]</code> и <code>trim[_if](input[, predicate])/code>.

Версия 11:30, 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])/code>.