1
typedef boost::bimap<boost::bimaps::vector_of<int>, boost::bimaps::vector_of<float> > bimap_t;
bimap_t mp;
mp.left.insert(bimap_t::left_value_type(2, 2.0f));

为什么这不起作用?并给出编译器错误insert()它找不到任何insert()作为bimap_t::left_value_type参数的东西。

但是boost::bimap<boost::bimaps::set_of<int>, boost::bimaps::vector_of<float> >有效。看起来左边不能是向量。但作为它的双向它应该没关系

4

1 回答 1

0

我以前从未使用过 Boost.Bimap,但查看文档似乎是leftright视图的类型,因此您可以使用的成员函数取决于您用作模板参数的集合。您可以在此处查看可用于 vector_of 视图的方法。你可以使用:

mp.left.insert(mp.left.end(), bimap_t::left_value_type(2,2.0f));
mp.left.push_back(bimap_t::left_value_type(2,2.0f));

您还可以使用:

mp.left.push_front(bimap_t::left_value_type(2,2.0f));

但出于性能原因不建议这样做。

PS:如果您使用bimap<boost::bimaps::set_of<int>, boost::bimaps::vector_of<float> >左侧insert视图,但右侧视图将失败。

于 2013-05-04T10:17:30.737 回答