سؤال

أحاول استخدام دفعة 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);

(ضعيف) مقتبس من على سبيل المثال في زيادة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top