天气图迭代器可以添加 shared_ptr 的计数?

Whether map’s iterator could add shared_ptr's counts?

例如:

#include <memory>

shared_ptr<map<int, int>> ptr1 = make_shared<map<int, int>>();
map<int, int>::const_iterator iter = ptr1->begin();
shared_ptr<map<int, int>> ptr2 = make_shared<map<int, int>>();
ptr1 = ptr2;

我的问题:iter 可以添加 ptr1 的计数吗?在这种情况下,ptr1的内存地址会在ptr1 = ptr2之后释放吗?

不,不能。

ptr1=ptr2运行时,指向第一个映射的最后一个共享指针消失并且对象被销毁。

iter 现在无效,除了销毁或赋值之外,几乎任何使用都会导致未定义的行为。

创建一个使其容器持久化的迭代器是可能的,如果相当麻烦的话。作为一般规则,您应该学会保持对象生命周期简单并使用对象生命周期,而不是指望智能指针为您解决它。