【发布时间】:2019-02-19 05:37:06
【问题描述】:
假设我有一个堆栈,其中包含int 的共享指针,如下所示:
#include <stack>
#include <memory>
using namespace std;
int main()
{
stack<shared_ptr<int>> s1;
stack<shared_ptr<int>> s2;
shared_ptr<int> v1 = make_shared<int>(1);
shared_ptr<int> v2 = make_shared<int>(1);
s1.push(v1);
s2.push(v2);
bool areEqual = s1 == s2; // This is false
}
如何让堆栈比较shared_ptr 指向的实际值而不是指针本身?
【问题讨论】:
-
你没有。对堆栈的访问仅限于 push 和 pop。如果您需要比较相等性,则需要使用向量。
-
stack的相关性如何?试试bool b = make_shared<int>(1) == make_shared<int>(1); -
您是否尝试比较整个堆栈并验证指针引用的所有值在两个堆栈上是否相同?或者您只是想验证每个堆栈的顶部是否具有同等价值?
-
我正在尝试比较整个堆栈并验证指针引用的所有值
标签: c++ pointers shared-ptr comparator