为什么没有boost :: intrusive :: map?

kov*_*rex 4 c++ boost map intrusive-containers

boost文档(http://www.boost.org/doc/libs/1_55_0/doc/html/intrusive.html)指出侵入式容器是为list(单/双链接)setmultiset.我找不到地图的实现.有没有更深层次的理由,还是只是等待实施?

Max*_*kin 6

这是因为a map<Key, Value>实际上是set<std::pair<Key const, Value>>Boost.Intrusive和Boost.MultiIndex集允许您使用其中一个值成员作为键.换句话说,没有必要map是否find可以接受可比较的密钥,而不是整个值来搜索哪个是一个长期未解决的问题,std::map并且std::set:

关联容器查找函数(find,lower_bound,upper_bound,equal_range)仅接受key_type的参数,要求用户构造(隐式或显式)key_type的对象以进行查找.这可能是昂贵的,例如,当比较器功能仅查看对象的一个​​字段时,构造大对象以在集合中搜索.用户之间强烈希望能够使用与key_type相当的其他类型进行搜索.