Пространства имён
Варианты
Действия

std::owner_less

Материал из cppreference.com
< cpp‎ | memory
 
 
 
Динамическое управление памятью
Низкоуровневое управление памятью
Аллокаторы
allocator
allocator_traits(C++11)
allocator_arg_t(C++11)
allocator_arg(C++11)
uses_allocator(C++11)
scoped_allocator_adaptor(C++11)
Неинициализированные хранилища
uninitialized_copy
uninitialized_copy_n(C++11)
uninitialized_fill
uninitialized_fill_n
raw_storage_iterator
get_temporary_buffer
return_temporary_buffer
Умные указатели
unique_ptr(C++11)
shared_ptr(C++11)
weak_ptr(C++11)
auto_ptr(устарело)
owner_less(C++11)
enable_shared_from_this(C++11)
bad_weak_ptr(C++11)
default_delete(C++11)
Поддержка сборки мусора
declare_reachable(C++11)
undeclare_reachable(C++11)
declare_no_pointers(C++11)
undeclare_no_pointers(C++11)
pointer_safety(C++11)
get_pointer_safety(C++11)
Разное
pointer_traits(C++11)
addressof(C++11)
align(C++11)
Библиотека C
 
Определено в заголовочном файле <memory>
template< class T >
struct owner_less; /* undefined */
(1) (начиная с C++11)
template< class T >
struct owner_less<std::shared_ptr<T>>;
(2) (начиная с C++11)
template< class T >
struct owner_less<std::weak_ptr<T>>;
(3) (начиная с C++11)

Этот функциональный объект предоставляет упорядочивание смешанного типа, основанное на владении объектом (в противоположность упорядочиванию по значению) для std::weak_ptr и std::shared_ptr. Порядок расположения будет определен следующим образом: два умных указателя считаются равными, если они оба пусты или оба управляют одним и тем же объектом, даже в том случае, если значения указателей, полученных с помощью функций-членов get() различаются (например потому, что они оба указывают на разные подъобъекты в пределах одного и того же объекта).

Этот шаблон класса является предпочтительным предикатом сравнения при построении ассоциативных контейнеров с использованием std::shared_ptr или std::weak_ptr в качестве ключей, к примеру

std::map<std::shared_ptr<T>, U, std::owner_less<std::shared_ptr<T>>>

или

std::map<std::weak_ptr<T>, U, std::owner_less<std::weak_ptr<T>>>.

operator< не определен для слабых указателей и может ошибочно посчитать два разделяемых указателя на один и тот же объект неравными (см. shared_ptr::owner_before)

[править] Типы-члены

Тип члена Определение
result_type bool
first_argument_type 1) T
2) std::shared_ptr<T>
3) std::weak_ptr<T>
second_argument_type 1) T
2) std::shared_ptr<T>
3) std::weak_ptr<T>

[править] Функции-члены

сравнивает свои аргументы, основываясь на их владении объектом
(функция)

[править] См. также

предоставляет владельцу на основе упорядочения общих указателей
Оригинал:
provides owner-based ordering of shared pointers
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

(public функция-член std::shared_ptr) [edit]