Обзор библиотеки Boost — различия между версиями
Материал из SEWiki
м |
|||
Строка 3: | Строка 3: | ||
== Умные указатели == | == Умные указатели == | ||
− | Все рассмотренные в прошлом семестре <<умные> указатели [http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm представлены | + | Все рассмотренные в прошлом семестре <<умные> указатели [http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/smart_ptr.htm представлены] |
в библиотеке Boost. | в библиотеке Boost. | ||
Строка 10: | Строка 10: | ||
* <code>weak_ptr</code> --- ссылка на объект, который находится под управлением <code>shared_ptr</code>. Следует отметить, что через этот указатель нельзя обратиться к объекту напрямую --- можно только создать <code>shared_ptr</code>, указывающий на этот объект, с помощью метода <code>lock()</code> --- если объект уже уничтожен, то возвращается пустой <code>shared_ptr</code>. | * <code>weak_ptr</code> --- ссылка на объект, который находится под управлением <code>shared_ptr</code>. Следует отметить, что через этот указатель нельзя обратиться к объекту напрямую --- можно только создать <code>shared_ptr</code>, указывающий на этот объект, с помощью метода <code>lock()</code> --- если объект уже уничтожен, то возвращается пустой <code>shared_ptr</code>. | ||
* <code>intrusive_ptr<T></code> --- аналог <code>shared_ptr<T></code>; требует, чтобы у типа <code>T</code> были определены методы intrusive_ptr_add_ref() и intrusive_ptr_release(). У <code>intrusive_ptr</code>, по крайней мере, два преимущества перед <code>shared_ptr</code>: | * <code>intrusive_ptr<T></code> --- аналог <code>shared_ptr<T></code>; требует, чтобы у типа <code>T</code> были определены методы intrusive_ptr_add_ref() и intrusive_ptr_release(). У <code>intrusive_ptr</code>, по крайней мере, два преимущества перед <code>shared_ptr</code>: | ||
− | + | ** размер объекта <code>intrusive_ptr</code> совпадает с размером указателя, | |
− | + | ** объекта <code>intrusive_ptr<T></code> можно проинициализировать от произвольного <code>T*</code>. | |
+ | |||
+ | Версия <<умного>> указателя с суффиксом <code>_array</code> управляет временем жизни массива, а не | ||
+ | отдельного объекта | ||
+ | |||
+ | == Строковые алгоритмы == |
Версия 11:20, 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
управляет временем жизни массива, а не
отдельного объекта