在C++ 0x中,Boost的bimap是否有可用的替代方法?
我想避免使用Boost,而是完全拥抱C++ 11。如有必要,Boost的bimap的精简版将对我有用(我需要一个恒定的bimap才能在枚举和相应的字符串之间切换)在我的程序中。该映射将是编译时常数,因此,即使是两个手动维护的映射也不是最佳解决方案。
谢谢!
更新:我在代码项目中找到了这个,但似乎许 cocoa 能是一个问题:http://www.codeproject.com/KB/stl/bimap.aspx?fid=12042&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=151#xx0xx
我只是在寻找一种干净简单的解决方案(一个 header /源文件或一点额外的东西,因为在我的情况下,两个镜像映射同样适用)。
最佳答案
我的感觉是,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)
。