交换两个boost :: adjacency_list图,类似于std :: swap

问题描述

我正在构建一个应用程序,其中包含一个类DecoratedGraph(例如),该类使用boost::adjacency_list graph作为基础成员。

我在DecoratedGraph中还有很多其他成员,其中一些成员在std::map的{​​{1}}上存储std::vectorvertices属性。我将这些附加属性称为graph

我已经编写了一个自定义复制构造函数,该构造函数不仅会复制图形,而且还要确保decorations引用 复制 图上的顶点,而不是原始图形。

根据Rule of 3,在复制构造函数旁边,我们还需要为复制赋值运算符和析构函数定义-因此我也一直在实现它们。

对于复制分配运算符,我使用了another stackoverflow answer建议的复制和交换惯用法。要为我的类实现交换功能,我需要交换decorationsgraph。目前,我已经使用decorationsstd::map::swap交换了std::vector::swap,并使用了decorations交换了两个对象的其他成员,包括std::swap

但是,当尝试在交换对象上使用graph时,我发现引用不再引用decorations上的顶点。我不确定我哪里出错了:我相信问题很可能在于graph函数的行为不符合我的预期。 swap上使用的swapdeocrationsstd::map的成员方法-我希望它们能按预期运行。我怀疑一个问题可能是在std::vector对象上使用std::swap的对象,这可能会有意外的行为。

我想知道boost::adjacency_list是交换两个std::swap boost::adjacency_list的正确方法吗?如果没有,正确的方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)