簡體   English   中英

BGL:沒有默認構造函數的捆綁對象?

[英]BGL: bundled object without a default constructor?

這個問題是關於Boost Graph Library

假設我的圖形類型定義如下:

using Graph = boost::adjacency_list<vecS, setS, directedS, State>;

現在,如果我理解正確的話,我可以添加一個新的State目標s像這樣的圖表:

auto vd = add_vertex(g); // g is a Graph object
g[vd] = s;

這種方式有兩個問題:

  • 它要求State具有默認的構造函數。 在這個特定的類State的情況下,默認構造函數根本沒有意義。

  • 這樣,在添加頂點時,我將為State對象的默認構造付費。 此成本是純運行時開銷。

因此,有沒有一種方法可以避免對捆綁對象使用默認構造函數?

說明文件

所有屬性值的類型必須為可復制構造,可分配和默認可構造。 從adjacency_list類獲得的屬性圖是Lvalue屬性圖概念的模型。 如果adjacency_list為const,則屬性映射為常量,否則屬性映射為可變。

您應該使屬性類型能夠容納引用您的State

對於第一步,您可能會成功實現帶有屬性的重載:

auto vd = add_vertex(s, g); // g is a MutablePropertyGraph object
g[vd] = s;

查看其他文件

暫無
暫無

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

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