c++11 - 比较 shared_ptr 实例的有效情况

标签 c++11 shared-ptr equality

在什么情况下比较 shared_ptr 实例而不是 shared_ptr 管理的底层类型是有效的?

例如,在运行以下代码后,是否会出现 personset 大小为 2 有效的情况?

shared_ptr<person> p0 = make_shared<person>(....);
shared_ptr<person> p1 = p0;

set<shared_ptr<person>> personset;

personset.insert(p0);
personset.insert(p1);

最佳答案

没有可行的理由来比较这些实例。事实上,默认情况下 shared_ptr 将通过指向控制 block 的底层指针(通过 .get 方法)执行相等/不相等比较器。

http://en.cppreference.com/w/cpp/memory/shared_ptr/operator_cmp

关于c++11 - 比较 shared_ptr 实例的有效情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947938/

相关文章:

c++ - 为集合中的每个元素调用带有多个参数的函数

c++ - boost::log 在 channel 记录器中设置 "Channel"属性

c++ - 从 std::shared_ptr<void> 初始化 std::shared_ptr<T>

java - !(a==b) 和 a!=b 的区别

Clojure 符号相等

c++ - §9.5/8 中可能含糊不清的陈述

c++ - 检查数组中消息的最有效方法

c++ - 在 shared_ptr 过期后定位 weak_ptr

c++ - 从共享指针的取消引用值中获取共享指针

c# - 在 C# 中比较两个字符串数组