问题描述
我正在构建一个应用程序,其中包含一个类DecoratedGraph
(例如),该类使用boost::adjacency_list
graph
作为基础成员。
我在DecoratedGraph
中还有很多其他成员,其中一些成员在std::map
的{{1}}上存储std::vector
和vertices
属性。我将这些附加属性称为graph
。
我已经编写了一个自定义复制构造函数,该构造函数不仅会复制图形,而且还要确保decorations
引用 复制 图上的顶点,而不是原始图形。
根据Rule of 3,在复制构造函数旁边,我们还需要为复制赋值运算符和析构函数定义-因此我也一直在实现它们。
对于复制分配运算符,我使用了another stackoverflow answer建议的复制和交换惯用法。要为我的类实现交换功能,我需要交换decorations
和graph
。目前,我已经使用decorations
和std::map::swap
交换了std::vector::swap
,并使用了decorations
交换了两个对象的其他成员,包括std::swap
但是,当尝试在交换对象上使用graph
时,我发现引用不再引用decorations
上的顶点。我不确定我哪里出错了:我相信问题很可能在于graph
函数的行为不符合我的预期。 swap
上使用的swap
是deocrations
和std::map
的成员方法-我希望它们能按预期运行。我怀疑一个问题可能是在std::vector
对象上使用std::swap
的对象,这可能会有意外的行为。
我想知道boost::adjacency_list
是交换两个std::swap
boost::adjacency_list
的正确方法吗?如果没有,正确的方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)