Libreria di memoria C ++ - senza proprietario

Descrizione

Definisce oggetti funzione che eseguono un confronto basato sul proprietario tra oggetti shared_ptr e / o weak_ptr.

Dichiarazione

Di seguito è riportata la dichiarazione per 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>>;

Parametri

Ptr - È un puntatore gestito.

Valore di ritorno

nessuna

Eccezioni

noexcep - Non genera eccezioni.

Esempio

Nell'esempio seguente viene spiegato su 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;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

value_based.size() is 2
owner_based.size() is 1