我有一个类似网络的数据结构,由连接在一起的节点组成。 其编号将发生变化的节点将以无特定顺序存储在std::vector<Node>
中,其中Node
是合适的类别。指针或索引?
我想跟踪节点之间的链接。同样,这些链接的数量也会改变,我正在考虑再次使用std::vector<Link>
。 Link
类必须包含有关它所连接的两个节点的信息以及其他链接功能。
应该Link
包含
- 两个指针中的两个节点?
- 两个整数,用作
std::vector<Node>
的索引? - 或者我应该采用不同的系统(为什么?)
第一种方法,虽然可能会更好,是因为指针将在每次添加或删除网络节点的时间来进行再生问题,但另一方面,这将使我摆脱困境将节点存储在随机存取容器中。
请指定所需的性能和相对频率:1.添加节点2.删除节点3.添加链接4.删除链接。还请指定是否需要对节点进行任何操作,例如排序以及为什么您需要在随机访问容器中使用它们。 – 2014-09-02 13:59:49
如果节点没有排序,并且您确定只会推到节点向量的末尾,那么索引将保持有效,我会使用索引。这是少了一件错误的事情。或者,有一个指向节点的指针向量,而不是节点本身。然后,您可以按照您喜欢的方式重新排列矢量,并且节点不会移动。 – 2014-09-02 14:06:02
节点将被删除并添加相同的频率,低于我添加或删除链接的频率。我并不需要随机访问容器中的节点或链接,也不需要对它们进行排序。 – MarcDuQuesne 2014-09-02 14:07:36