using boost::unordered_map
fix length