دفعة adjacency_list المساعدة اللازمة
-
03-07-2019 - |
سؤال
أحاول استخدام دفعة adjacency_list نوع أواجه صعوبة في فهم الوثائق.
أقول تعريف فئة اسمه الدولة و أنا مثيل مثيل واحد لكل ولاية في الولايات المتحدة الأمريكية:
class State { ... };
State california, oregon, nevada, arizona, hawaii, ...
أريد أن أدخل في هذه دفعة::adjacency_list القمم هي الدول حواف الحدود.على الدول المذكورة أعلاه, وأعتقد أن الرسم سيكون هذه البيانات:
california : oregon, nevada, arizona
hawaii :
oregon : california, nevada
nevada : oregon, california, arizona
arizona : california, nevada
أنا أفهم كيفية وضع رجات في الرسم البياني و فكرت مجرد جعل مجموعة من الدول إدراج بها مؤشر مجموعة في الرسم البياني ، ولكن يبدو أنني يجب أن تكون قادرة على أقول:
add_edge(california, oregon, graph);
ولكن بالطبع هذا لا يعمل.الرجاء المساعدة!
تحرير:
هنا مثال تقريبا بالضبط ما أريد.
المحلول
القراءة على دفعة::adjacency_list ، يبدو كنت من المفترض أن استخدام خصائص القمم بدلا من شيء مثل فئة:
struct VertexProperties {
std::string stateName;
};
typedef adjacency_list<listS, listS, bidirectionalS, VertexProperties> Graph;
Graph adjacentStates(50);
property_map<Graph, std::string VertexProperties::*>::type
stateName = get(&VertexProperties::stateName, adjacentStates);
add_edge(vertex("california", adjacentStates), vertex("oregon", adjacentStates), adjacentStates);
(ضعيف) مقتبس من على سبيل المثال في زيادة.
لا تنتمي إلى StackOverflow