• Advertisement
Sign in to follow this  

Iterating in order over an unordered map

This topic is 1574 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have an std::unordered_map<MyStruct>. It's unordered for extra-fast lookups which is what will be needed most of the time. However, once, at startup, I'd like to iterate over it in order of MyStruct::myInt.

 

The container currently contains upwards of 2000 elements, and might reach as high as 5-10 thousand.

 

Is there some way I can iterate over it in an order other than its internal hashing order?

I'm not worried about speed.

Edited by Servant of the Lord

Share this post


Link to post
Share on other sites
Advertisement

No.

 

If you know the keys used you can sort them and then look up the items in order.

 

You could put them in a map and iterate over them (and use the map to fill the unordered_map) then throw the map away.

Share this post


Link to post
Share on other sites

I'm pretty sure boost::multi_index (http://www.boost.org/doc/libs/1_54_0/libs/multi_index/doc/index.html) can do what you're asking for.  You can set up a sequential index and an unordered index.


Thanks for the tip about multi_index. Just used it to clean up a monstrosity with multiple containers that I created a while back.

Boost contains so much, it's tricky to really get an overview of the stuff you acually need sometimes...

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement