c – 通过唯一的成员ID识别对象是一个好主意吗?
我的问题是,我应该如何将对象彼此联系起来.
我有两个载体,矢量< Baby>婴儿和矢量<玩具>玩具.每个婴儿和每个玩具都有一个唯一的成员int id.因此,所有婴儿和玩具的编号从0到n. 现在,每个宝宝都有一个首选玩具,每个玩具都有一个首选宝宝.到目前为止,我使用指针:宝贝有一个指向他喜欢的玩具的指针,这个玩具有指向宝贝的指针. (没关系,因为我永远不会改变矢量) 当我相处时,我质疑我的设计并发现指针有效,但它们可能会导致将来出现问题.相反,如果我使用身份证我会没事,但我需要访问整个婴儿或玩具矢量. 在这种情况下有共同的做法吗?使用指针是个好主意吗?我应该以智能方式编写自己的容器吗? 编辑: 解决方法
对关系使用唯一ID具有一些优点. ID不能像指针那样悬挂,也不能像向量索引一样超出范围.它们可以很容易地序列化.重新分配或重新排序向量时,它们不会失效.
但它们也有一些缺点.您可以确保它们保持唯一(使用GUID可以帮助解决此问题).它们的使用效率也非常低.要按ID查找对象,您必须搜索整个向量.您可以通过向量执行一次传递来创建查找映射/ unordered_map / vector,其中键是ID,值是指向向量中对象或索引的指针. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |