加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 通过唯一的成员ID识别对象是一个好主意吗?

发布时间:2020-12-16 06:50:05 所属栏目:百科 来源:网络整理
导读:我的问题是,我应该如何将对象彼此联系起来. 我有两个载体,矢量 Baby婴儿和矢量玩具玩具.每个婴儿和每个玩具都有一个唯一的成员int id.因此,所有婴儿和玩具的编号从0到n. 现在,每个宝宝都有一个首选玩具,每个玩具都有一个首选宝宝.到目前为止,我使用指针:宝
我的问题是,我应该如何将对象彼此联系起来.

我有两个载体,矢量< Baby>婴儿和矢量<玩具>玩具.每个婴儿和每个玩具都有一个唯一的成员int id.因此,所有婴儿和玩具的编号从0到n.

现在,每个宝宝都有一个首选玩具,每个玩具都有一个首选宝宝.到目前为止,我使用指针:宝贝有一个指向他喜欢的玩具的指针,这个玩具有指向宝贝的指针. (没关系,因为我永远不会改变矢量)
然而,婴儿和玩具彼此形成的区别在于它们的ID,而不是它们在矢量中的位置.

当我相处时,我质疑我的设计并发现指针有效,但它们可能会导致将来出现问题.相反,如果我使用身份证我会没事,但我需要访问整个婴儿或玩具矢量.

在这种情况下有共同的做法吗?使用指针是个好主意吗?我应该以智能方式编写自己的容器吗?

编辑:
我想补充一点,我已经考虑过将婴儿与玩具联系起来的地图.但是我在运行时确定了婴儿与玩具的关系(以及相反的方式).找到这种关系是该计划的主要部分.因此,我不确定我是否可以使用地图.但是,我会看一下(直到现在还没用过).更重要的是,关于首选玩具和婴儿的信息必须是对象的一部分,而不是(仅)一个上级数据结构.

解决方法

对关系使用唯一ID具有一些优点. ID不能像指针那样悬挂,也不能像向量索引一样超出范围.它们可以很容易地序列化.重新分配或重新排序向量时,它们不会失效.

但它们也有一些缺点.您可以确保它们保持唯一(使用GUID可以帮助解决此问题).它们的使用效率也非常低.要按ID查找对象,您必须搜索整个向量.您可以通过向量执行一次传递来创建查找映射/ unordered_map / vector,其中键是ID,值是指向向量中对象或索引的指针.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读