Как скопировать один график повышения в другой (Deep Copy) со всеми настраиваемыми свойствами? ⇐ C++
Как скопировать один график повышения в другой (Deep Copy) со всеми настраиваемыми свойствами?
У меня есть график повышения с настраиваемыми свойствами. Я хочу сделать копию. Я попробовал это следующим образом, но получил много ошибок компиляции.
Вот что я сделал:
с использованием BGType = boost::adjacency_list; vertexProps.h
класс vertexProps { публика: явный vertexProps(const std::string *moduleName = nullptr, const std::string *name = nullptr, длинный refPtr = 0) : _refPtr(refPtr), { _moduleName = имя модуля? *имямодуля: ""; _имя = имя? *имя : ""; }; структура CustomVertexCopy { void оператор()(const vertexProps& source_vertex, vertexProps& target_vertex) const { target_vertex._refPtr = source_vertex._refPtr; target_vertex._moduleName = source_vertex._moduleName; target_vertex._name = source_vertex._name; } edgeProps.h
класс EdgeProps { публика: явный EdgeProps (std::string name = "") : _name(имя){}; std::string _name; }; структура CustomEdgeCopy { void оператор()(const EdgeProps& source_edge, EdgeProps& target_edge) const { target_edge._name = source_edge._name; } }; someFunction.cpp
OnClick(BGType* bGraph) { // некоторый код BGType* oldBg = новый BGType; boost::copy_graph(bGraph, oldBg, boost::vertex_copy(CustomVertexCopy())); boost::copy_graph(bGraph, oldBg, boost::edge_copy(CustomEdgeCopy())); // некоторый код } Где я ошибаюсь?
У меня есть еще одно сомнение.
Повлияет ли такое глубокое копирование на производительность, если grpah будет большим? Если да, есть ли способ избежать этого?
@sehe: Я попробовал ваш ответ, но получил ошибку компиляции. Поэтому я попытался немного изменить код, и теперь ошибки компиляции нет. Но, пожалуйста, ознакомьтесь с моими изменениями и предложите мне, правильные они или неправильные.
OnClick(BGType* bGraph) { // некоторый код BGType* oldBg = новый BGType; boost::copy_graph(*bGraph, *oldBg, boost::vertex_copy(CustomVertexCopy{*bGraph,*oldBg}) .edge_copy(CustomEdgeCopy{*bGraph, *oldBg})); // некоторый код }
У меня есть график повышения с настраиваемыми свойствами. Я хочу сделать копию. Я попробовал это следующим образом, но получил много ошибок компиляции.
Вот что я сделал:
с использованием BGType = boost::adjacency_list; vertexProps.h
класс vertexProps { публика: явный vertexProps(const std::string *moduleName = nullptr, const std::string *name = nullptr, длинный refPtr = 0) : _refPtr(refPtr), { _moduleName = имя модуля? *имямодуля: ""; _имя = имя? *имя : ""; }; структура CustomVertexCopy { void оператор()(const vertexProps& source_vertex, vertexProps& target_vertex) const { target_vertex._refPtr = source_vertex._refPtr; target_vertex._moduleName = source_vertex._moduleName; target_vertex._name = source_vertex._name; } edgeProps.h
класс EdgeProps { публика: явный EdgeProps (std::string name = "") : _name(имя){}; std::string _name; }; структура CustomEdgeCopy { void оператор()(const EdgeProps& source_edge, EdgeProps& target_edge) const { target_edge._name = source_edge._name; } }; someFunction.cpp
OnClick(BGType* bGraph) { // некоторый код BGType* oldBg = новый BGType; boost::copy_graph(bGraph, oldBg, boost::vertex_copy(CustomVertexCopy())); boost::copy_graph(bGraph, oldBg, boost::edge_copy(CustomEdgeCopy())); // некоторый код } Где я ошибаюсь?
У меня есть еще одно сомнение.
Повлияет ли такое глубокое копирование на производительность, если grpah будет большим? Если да, есть ли способ избежать этого?
@sehe: Я попробовал ваш ответ, но получил ошибку компиляции. Поэтому я попытался немного изменить код, и теперь ошибки компиляции нет. Но, пожалуйста, ознакомьтесь с моими изменениями и предложите мне, правильные они или неправильные.
OnClick(BGType* bGraph) { // некоторый код BGType* oldBg = новый BGType; boost::copy_graph(*bGraph, *oldBg, boost::vertex_copy(CustomVertexCopy{*bGraph,*oldBg}) .edge_copy(CustomEdgeCopy{*bGraph, *oldBg})); // некоторый код }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
В чем разница между `std :: copy` и` std :: ranges :: copy`? [дублировать]
Anonymous » » в форуме C++ - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Неужели данных .NET Copy Copy Marry обратно и обратно, или он прикрепляет массив?
Anonymous » » в форуме C# - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-