C++ Memory 库 - 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 − 它是一个托管指针。
返回值
none
异常
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