Descripción
Define objetos de función que realizan una comparación basada en el propietario entre los objetos shared_ptr y / o thin_ptr.
Declaración
A continuación se muestra la declaración de std :: owner_less.
template <class Ptr> struct owner_less;
template <class T> struct owner_less<shared_ptr<T>>;
template <class T> struct owner_less<weak_ptr<T>>;
C ++ 11
template <class Ptr> struct owner_less;
template <class T> struct owner_less<shared_ptr<T>>;
template <class T> struct owner_less<weak_ptr<T>>;
Parámetros
Ptr - Es un puntero administrado.
Valor devuelto
ninguna
Excepciones
noexcep - No arroja excepciones.
Ejemplo
En el siguiente ejemplo se explica sobre std :: owner_less.
#include <iostream>
#include <memory>
#include <set>
int main () {
int * p = new int (10);
std::shared_ptr<int> a (new int (20));
std::shared_ptr<int> b (a,p);
std::set < std::shared_ptr<int> > value_based;
std::set < std::shared_ptr<int>, std::owner_less<std::shared_ptr<int>> > owner_based;
value_based.insert (a);
value_based.insert (b);
owner_based.insert (a);
owner_based.insert (b);
std::cout << "value_based.size() is " << value_based.size() << '\n';
std::cout << "owner_based.size() is " << owner_based.size() << '\n';
delete p;
return 0;
}
Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:
value_based.size() is 2
owner_based.size() is 1