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()上给出编译器错误,它找不到任何以bimap_t::left_value_type为参数的insert()。
然而,boost::bimap<boost::bimaps::set_of<int>, boost::bimaps::vector_of<float> >是有效的。看起来左边不能是向量。但由于它是双向的,所以这并不重要
发布于 2013-05-04 18:17:31
我以前从未使用过Boost.Bimap,但是翻阅文档发现,left和right视图的类型,以及您可以使用的成员函数,都取决于您用作模板参数的集合。您可以查看here可以与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可以在左边的视图下工作,但是在右边的视图下会失败。
https://stackoverflow.com/questions/16365536
复制相似问题