
On 5/22/07, "JOAQUIN LOPEZ MU?Z" <joaquin@tid.es> wrote:
De: Péter Szilágyi <peterke@gmail.com>
I don't really want to add additional libraries, that aren't needed. I'd rather solve it with the already available tools.
Boost.MultiIndex provides hashed indices, so you can emulate an unordered_set with a single-index multi_index_container. [snip] An emulation of an unordered map is a little more tricky and the result won't be TR1-compatible, but might be close enough for your needs
You can use Boost.Bimap. #include <boost/bimap/bimap.hpp> #include <boost/bimap/unordered_set_of.hpp> #include <boost/bimap/unconstrained_set_of.hpp> using boost::bimaps; typedef bimap< unordered_set_of<std::string>, unconstrained_set_of<int> > bm_type; typedef bm_type::left_map map_type; bm_type bm; map_type & m = bm.left; // Use map as a std::unordered_map m["one"] = 1; m["two"] = 2; assert( m.find("one") != m.end() ); m.insert( map_type::value_type("three",3) ); assert( m.size() == 3 ); If you need unordered_multimap use unordered_multiset_of. You can read more about Boost.Bimap here: http://tinyurl.com/22sja5 Best regards Matias