我的问题是,如何让对象彼此关联。我有两个向量:vector babies和vector toys。每个婴儿和每个玩具都有一个唯一的成员int id。因此所有的婴儿和玩具都从0到n编号。
现在,每个Baby都有一个首选的Toy,每个Toy都有一个首选的Baby。到目前为止,我使用指针:Baby有一个指向他首选Toy的指针,而这个Toy有一个指向Baby的指针。(这没问题,因为我永远不会改变向量)然而,区分婴儿和玩具的是它们的ID,而不是它们在向量中的位置。
随着我的深入思考,我质疑了我的设计,并发现指针是可行的,但未来可能会导致问题。相反,如果我使用ID,我就可以做得很好,但我需要访问整个babies或toys向量。
在这种情况下,是否有常见的做法?使用指针是一个好主意吗?我应该编写自己的容器以智能地使用ID吗?
编辑: 我想补充一下,我已经考虑过使用map来关联baby和toy。然而,我在运行时确定baby和toy之间的关系(以及另一种方式)。查找这个关系是程序的一个重要部分。因此,我不确定是否可以使用map。但是,我会去看一下它(到目前为止还没有使用过)。此外,首选玩具和婴儿的信息必须成为对象的一部分,而不是(只是)超级数据结构的一部分。
现在,每个Baby都有一个首选的Toy,每个Toy都有一个首选的Baby。到目前为止,我使用指针:Baby有一个指向他首选Toy的指针,而这个Toy有一个指向Baby的指针。(这没问题,因为我永远不会改变向量)然而,区分婴儿和玩具的是它们的ID,而不是它们在向量中的位置。
随着我的深入思考,我质疑了我的设计,并发现指针是可行的,但未来可能会导致问题。相反,如果我使用ID,我就可以做得很好,但我需要访问整个babies或toys向量。
在这种情况下,是否有常见的做法?使用指针是一个好主意吗?我应该编写自己的容器以智能地使用ID吗?
编辑: 我想补充一下,我已经考虑过使用map来关联baby和toy。然而,我在运行时确定baby和toy之间的关系(以及另一种方式)。查找这个关系是程序的一个重要部分。因此,我不确定是否可以使用map。但是,我会去看一下它(到目前为止还没有使用过)。此外,首选玩具和婴儿的信息必须成为对象的一部分,而不是(只是)超级数据结构的一部分。
int
,而是使BabyId
和ToyId
成为不同的类型;你不想意外地回收一个婴儿,对吧? - Matthieu M.