我试图在 c++ 中写一个小小的< a href="http://en.wikipedia.org/wiki/Quad-sedge" rel=“nofollow” >quaddge c++ (把它看作是某种图表) 。 每个节点都应该跟踪他的邻居。 我只能跟踪即将流出的弧。
第一个想法是使用指针来做到这一点:
struct Node {
//....
Node * n1,n2,... nk;
};
然而,当您必须执行复制构建器 (首先复制所有节点,然后将旧节点的每个指针绘制到新节点的相对指针上) 时,这个方法会令人心痛。
我认为,在这种情况下,使用整数指数而不是指针是更好的办法。
struct Node {
//....
int n1,n2,...nk;
};
Is this approach common and correct? If it is, which is the proper container to map indices to nodes?
std:::vector<Node>
可能是最有效的方法,我只需使用矢量中的索引来指一个节点,但从图形中删除一个节点会非常复杂(需要重新标定图表中的每个引用)。
使用 std:: Unorded_map<int,Node>
将稍好一点,但还需要跟踪自由名称(如果我插入节点1,2,3,然后删除2,我需要跟踪名称2的存在情况)。
想想一个池式分配器,它用其基底的偏移作为指针类型。
是否有这种热门的集装箱(在Boost或其他任何热门图书馆)?