bidirectional map
Ellery Newcomer
ellery-newcomer at utulsa.edu
Tue Nov 12 17:07:56 PST 2013
On 11/11/2013 05:14 PM, bioinfornatics wrote:
> Dear,
> I am looking for a bidirectional map i.e
> http://en.wikipedia.org/wiki/Bidirectional_map
>
> My seach into D documentation seem to said to me that this structure is
> not implemented.
>
> Something like (for primary idea):
>
>
> struct BidirectionalMap(T,U){
> private:
> T[U] _forwardHash;
> U[T] _reverseHash;
>
> public:
>
> @safe
> void opIndeyAssign( T k, U v){ // pure?
> _forwardHash[k] = v;
> _reverseHash[v] = k;
> }
>
>
> @property
> BidirectionalMap!(T,U) dup(){
> return BidirectionalMap!(T,U)( this );
> }
> }
you could build one using multi_index.
https://bitbucket.org/ariovistus/multi_index
at least, that is how boost::bimap was done. I always assumed it would
be trivial in D, but I haven't tried doing it. Something like
alias MultiIndexContainer!(Tuple!(T,"t",U,"u"),
IndexedBy!(HashedUnique!("a.t"), HashedUnique!("a.u"))) BiMap;
and then wrap as you see fit.
More information about the Digitalmars-d-learn
mailing list