簡體   English   中英

邊列表上帶有地圖的 BGL 圖

[英]BGL graph with map on edges list

我正在嘗試使用 Boost Graph Library 創建一些特定的結構。 我需要有帶有輸入和輸出端口的節點(頂點)。 每個輸出端口可以連接到其他節點的任何輸入端口。 我希望能夠檢查特定的輸出或輸入端口是否連接到任何其他端口。

這個想法是在 adjacency_list 中使用 std::map 作為 OutEdgeList 。

根據: http : //www.boost.org/doc/libs/1_52_0/libs/graph/doc/using_adjacency_list.html#sec :choosing-graph-type 我只能選擇 std::vector 之一, std::list、std::slist、std::set、std::multiset 和 std::hash_set。 (您可以選擇 mapS 作為類型,但它實現為 std::set 並且我無法通過鍵獲取值)

我有幾個問題:

  1. 是否可以使用 std::map? 如果是如何?
  2. 使用 std::map 時如何遍歷頂點的輸入?
  3. 如果以上是不可能的,我該如何實現適合問題的結構?

謝謝!

我終於切換到Lemon 圖形庫,它不像 BGL 那樣 hacky

我不明白為什么 map 不能用作存儲傳出邊緣的數據結構。 Map 的迭代器的工作方式與std::vector等類似。要處理傳入的邊,每個頂點上需要 2 個映射。 AFAIK BGL 支持頂點上的兩個列表。

我建議你修改(hack)BGL,看看會發生什么。 變化可能不小。 您必須為您的新型容器提供 adjacency_list 專業化。 這很可能會奏效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM