Biblioteca de memoria C ++ - sin propietario

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