C++ 内存库 -owner_less


描述

它定义了在shared_ptr和/或weak_ptr对象之间执行基于所有者的比较的函数对象。

宣言

以下是 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>>;

参数

Ptr - 它是一个托管指针。

返回值

没有任何

例外情况

noexcep - 它不会抛出任何异常。

例子

在下面的示例中解释了 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;
}

让我们编译并运行上面的程序,这将产生以下结果 -

value_based.size() is 2
owner_based.size() is 1
内存.htm