代码之家  ›  专栏  ›  技术社区  ›  Yippie-Ki-Yay

C++基本指针问题

  •  0
  • Yippie-Ki-Yay  · 技术社区  · 15 年前

    我有一些共享指针 shared_ptr<T> pointer1(new T(1)); .

    pointer2 std::map 或其他容器)。假设拷贝是这样做的 map.insert(make_pair(key1, pointer1));

    我使用第二个副本只是为了预先缓存一些数据,这意味着如果主指针 已无效 在这种情况下我该怎么办?

    pointer1 在我的代码的其他部分变得无效?

    ptr.unique() 设置为 true 摧毁他们?

    也许有其他选择/建议?


    编辑-普通代码示例

    std::map<int, shared_ptr<int> > map;
    
    {
       shared_ptr<int> pointer1(new int(5));
       map.insert(std::make_pair(0, pointer1));
    }
    

    <0, shared_ptr[NULL]> 而不是 <0, shared_ptr[5]>

    谢谢

    2 回复  |  直到 5 年前
        1
  •  1
  •   Jeremy Friesner    15 年前

    听起来这是一项针对弱者的任务:

    http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/weak_ptr.htm

    试着把它们放在你的桌子上,而不是放在共享的桌子上。

        2
  •  1
  •   Loki Astari    15 年前

    我使用第二个副本只是为了预先缓存一些数据,这意味着如果主指针已经无效,就不需要存储第二个指针。在这种情况下我该怎么办?

    如果关联的共享\u ptr已重置,则弱\u ptr知道它。

    别这么想。
    但是如果你使用弱指针,这将不是必需的。