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