Unordered連想コンテナのイテレータカテゴリ

Bidirectional iterators in unordered_map? - Stack Overflow


std::map等の連想コンテナのイテレータカテゴリはBidirectional Iteratorですが、
boost::unordered_map等のUnordered連想コンテナのイテレータカテゴリはForward Iteratorです。
C++0x(N3092)でもForward Iteratorになってます:23.2.5 p12。



以下、Stack Overflowの回答の一部を引用:

unordered_mapにはBidirectional Iteratorにできない技術的な理由はない。
主な理由は、実装の追加コストが必要になるということと、設計者が、ハッシュマップでBidirectional Iteratorを必要としてる人は誰もいないだとうと考えたため。(以下略...