|
Boost : |
From: Matias Capeletto (matias.capeletto_at_[hidden])
Date: 2007-05-23 04:31:18
On 5/22/07, "JOAQUIN LOPEZ MU?Z" <joaquin_at_[hidden]> wrote:
> De: Péter Szilágyi <peterke_at_[hidden]>
> > 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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk