Как скопировать один график повышения в другой (Deep Copy) со всеми настраиваемыми свойствами?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как скопировать один график повышения в другой (Deep Copy) со всеми настраиваемыми свойствами?

Сообщение Anonymous »


У меня есть график повышения с настраиваемыми свойствами. Я хочу сделать копию. Я попробовал это следующим образом, но получил много ошибок компиляции.

Вот что я сделал:

с использованием 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})); // некоторый код }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»