【发布时间】:2015-11-30 15:12:59
【问题描述】:
我将在<unsigned long, const char*> 映射中最多包含 50 个条目。这样做的原因是我使用的协议在初始握手后通过数字引用字符串名称 - 我假设与我的地图类似的地图必须存在于服务器上。
我想要的是一个可以同时搜索键和值的映射(两者都保证是唯一的并且绑定在一起),并且代码复杂度和性能成本大致相同。一个想法是:
symethric_map<unsigned long, const char*> map;
map[165]="NODE_A";
std::cout<<map->inverse["NODE_A"]<<std::endl; // Should print 165
此代码中的想法是symethric_map<T,N>::inverse 是一个可以将映射键视为值的对象,反之亦然。当然,使用简单的searchValue 方法映射也可以解决这个问题。
我要求这样做是因为我将不断地将数字解析为字符串,反之亦然,并且没有任何可靠的数字生成系统,唯一的方法就是记住所有的关系。如果数字是序数,则可以使用std::vector,但情况并非总是如此。我愿意使用任何增强功能以及 C++11 技巧。
【问题讨论】:
-
你在
bimap之后吗? -
@EdChum 我想是的,就是这样。我只是希望会有更多的语法糖......
-
bimap 非常易于使用:boost.org/doc/libs/1_59_0/libs/bimap/doc/html/boost_bimap/… 除非您有特殊要求,否则我不会费心重新发明轮子