目录

owner_less

描述 (Description)

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

声明 (Declaration)

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

参数 (Parameters)

Ptr - 它是一个托管指针。

返回值 (Return Value)

没有

异常 (Exceptions)

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

例子 (Example)

在下面的例子中解释了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
↑回到顶部↑
WIKI教程 @2018