rub*_*nvb 24 c++ stl map bimap c++11
在C++ 0x中有没有可用的替代Boost的bimap?
我想避免使用Boost,但完全接受C++ 11.如果有必要的话,在我的程序中,Boost的bimap的精简版本对我有用(我需要一个恒定的bimap来在枚举和相应的字符串之间切换).地图将是编译时常量,因此即使两个手动维护的地图也不是最佳解决方案.
谢谢!
更新:我在代码项目中找到了这个,但似乎许可可能是一个问题:http://www.codeproject.com/KB/stl/bimap.aspx? fid = 12042&df = 90&mpp = 25&noise = 3&sort = Position&view = Quick&fr = 151#xx0xx
我只是在寻找一个干净简单的解决方案(一个标题/源文件或一点额外,因为在我的情况下两个镜像地图同样好).
ild*_*arn 37
简答:不.
答案很长:不.
应当指出的是,C++ 1 4的支持透明比较消除了的时间Boost.Bimap 90%的需要*:当你需要关闭任何给定的加键属性的对象的(存储或计算的),通常无论如何,在对象中固有/存在的简单,按位可比的唯一标识符.使用透明比较器,您可以将对象与任何可能的值进行比较,只能按类型进行区分,只要可以从对象获取/计算所述值而不进行变异即可.
*猜测,而不是统计
Cli*_*ton 11
我的感觉是Boost库中的许多工作使它们与其他库/ STL一起工作.
如果您不需要该功能,则可以使用带有std::map<X*, Y*>和的类std::map<Y*, X*>.然后有一个像下面的方法:add(X,Y),remove(X,Y),get_left(X)和get_right(Y).
如果要存储副本,add(X,Y)可以分配内存,并remove(X,Y)可以取消分配.此外,您可以定义一个析构函数来调用remove(X,Y)其余元素.