在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)

10-08 08:33
查看更多