首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost::bimap不使用vector_of

boost::bimap不使用vector_of
EN

Stack Overflow用户
提问于 2013-05-04 02:38:11
回答 1查看 420关注 0票数 1
代码语言:javascript
复制
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> >是有效的。看起来左边不能是向量。但由于它是双向的,所以这并不重要

EN

回答 1

Stack Overflow用户

发布于 2013-05-04 18:17:31

我以前从未使用过Boost.Bimap,但是翻阅文档发现,leftright视图的类型,以及您可以使用的成员函数,都取决于您用作模板参数的集合。您可以查看here可以与vector_of视图一起使用的方法。您可以使用:

代码语言:javascript
复制
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));

您还可以使用:

代码语言:javascript
复制
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可以在左边的视图下工作,但是在右边的视图下会失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16365536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档