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

时间:2009-08-13 01:18:24

标签: c++ boost

我正在尝试使用我定义的自定义Node类型来实例化boost::mutable_queue的简单版本。使用以下代码段(使用std和boost名称空间以及所有必需的包含)实例化mutable_queue<double>实例时,我没有遇到任何问题:

int N = 100;

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

但是,当我尝试将double切换为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。有人可以帮我解决这个片段,也许可以解释为什么这是正确的做法?

1 个答案:

答案 0 :(得分:1)

我没有看到你在哪里调用push,但是当你应该推送一个Node时,你似乎正在推动Node *:

::push(Node*&)

它告诉你推动Node const&amp;:

push(const IndexedType&)

其中IndexedType = Node

相关问题