代码之家  ›  专栏  ›  技术社区  ›  Thanatos

建立索引:拷贝还是指针?

  •  1
  • Thanatos  · 技术社区  · 16 年前

    我有一个数据结构存储…嗯,数据。现在,我需要以稍微不同的方式访问不同的数据块,所以我实际上正在构建一个内存索引。但我想知道:索引应该包含指针还是副本?

    要详细说明,就说我有

    class Widget
    {
        // Ways to access the list of gears...
    private:
        std::list<Gears> m_gears;
    };
    

    现在,我有两个 Widget 在这两者之间存在一个映射 Gear S.目前,这是

    boost::unordered_map<Gear, Gear>
    

    但是 齿轮 是一个相当重的课程,我觉得制作这么多的副本是很糟糕的设计。我可以存储一个指针,但是映射只在相应的 小装置 S,你开始 -> …(如果是那样的话) std::list 曾经改变为 std::vector ,它变得更复杂…)

    关于复制品,实际上更糟的是:有两个 boost::unordered_map S,每个方向一个。所以,对于每一个 齿轮 ,最多2份。

    或者,我可以将索引放入 小装置 但是我觉得这违反了 小装置 班级。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Karel Petranek    16 年前

    您可以尝试Boost指针容器库: http://www.boost.org/doc/libs/1_43_0/libs/ptr_container/doc/ptr_container.html

    我认为它正好解决了你所面临的问题。

        2
  •  0
  •   WillfulWizard    16 年前

    你能把所有的齿轮都存储在一个地方吗,就像齿轮类中静态的那样,然后让每个映射和小部件只存储对它的引用/索引?

    你必须跟踪每个齿轮的参考,这样你就知道什么时候可以处理它们,但这应该足够简单。

    推荐文章