簡體   English   中英

在boost :: mutable_queue中使用Boost Graph Library:property_map

[英]Using Boost Graph Library: property_map in boost::mutable_queue

我正在嘗試使用我定義的自定義Node類型實例化boost :: mutable_queue的簡單版本。 我可以使用以下代碼段實例化mutable_queue<double>實例(使用std和boost命名空間,並且包括所有必需的內容):

int N = 100;

mutable_queue<double> *q = 
    new mutable_queue<double>(N, less<double>(), identity_property_map());

但是,當我嘗試將double切換到Node (對於該Node ,我已經重載了operator<operator== ),我不再能夠使其工作。 這是我正在嘗試的一個代表性示例:

typedef Node entry_t;
typedef vector<entry_t> storage_t;
typedef less<entry_t> comp_t;
typedef identity_property_map prop_map_t;
//typedef iterator_property_map<storage_t, 
//  property_map<storage_t, entry_t>::type >  prop_map_t;
typedef mutable_queue<entry_t, storage_t, comp_t, prop_map_t> queue_t;

queue_t *q = new queue_t(N, comp_t(), prop_map_t());

這給了我這些錯誤:

error: no matching function for call to ‘boost::mutable_queue >, std::less, boost::identity_property_map>::push(Node*&)’
    mutable_queue.h:100: note: candidates are: void boost::mutable_queue::push(const IndexedType&) [with IndexedType = UnitTest::Node_test()::entry_t, RandomAccessContainer = std::vector >, Comp = std::less, ID = boost::identity_property_map]

我的懷疑是我不了解如何使用property_map 有人可以幫助我修復此代碼段,還可以對為什么這樣做是正確的做法給出一些解釋嗎?

我看不到您在哪里調用推,但是您應該在推節點時似乎在推Node *:

::push(Node*&)

告訴您有一個Node const&的推動者:

push(const IndexedType&)

其中IndexedType =節點

暫無
暫無

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

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