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