Biblioteca de memória C ++ - sem proprietário

Descrição

Ele define objetos de função que realizam uma comparação baseada no proprietário entre objetos shared_ptr e / ou weak_ptr.

Declaração

A seguir está a declaração para 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 - É um ponteiro gerenciado.

Valor de retorno

Nenhum

Exceções

noexcep - Não lança nenhuma exceção.

Exemplo

No exemplo a seguir, 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

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