comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: How to use associative arrays in Ada 2005?
Date: Mon, 27 Nov 2006 22:58:50 +0000
Date: 2006-11-27T22:58:50+00:00	[thread overview]
Message-ID: <m2irh0a445.fsf@grendel.local> (raw)
In-Reply-To: 456b6536$0$1006$39cecf19@news.twtelecom.net

Matthew Heaney <mheaney@on2.com> writes:

> Simon Wright wrote:
>>
>> There's no reason I can see to use maps of maps *for this problem*. I
>> would use a hash function (Nation x Family_Name x Name) => Hash_Type
>> in a single map.
>
> Yes, that's right, you could do it either way.
>
> I prefer that OP's approach of using a map of maps of maps, since that
> allows you to perform queries like "give me all the entries for this
> nation", etc.

But that only works for the first map. You couldn't find all the
Smiths that way.

If that's what you're after, you need (in database terms) a second
independent index.

>> Matt, I see (A.18.4(5)) that Ada.Containers doesn't allow hash
>> collisions (which, if true, is demanding a lot of hash function
>> designers). 
>
> You're misreading that paragraph.  It does say that:
>
> "A map never contains two or more nodes with equivalent keys."
>
> but that's very different from saying "hash collisions aren't allowed."

I've just read (and re-read, and re-read) A.18.5(43) and I see what
you mean. Perhaps it's a bit late. I had read 'same hash =>
equivalent' whereas it's actually 'equivalent => same hash'.

> If you have as your key a record comprising the 3 strings (nation,
> family name, given name), then "=" would be adequate for
> Equivalent_Keys.

I would have a record with (nation, family_name, given_name, age) --
if you have filtered out a container with just the Smiths you'd want
to know the other facts for each of them, too.



  reply	other threads:[~2006-11-27 22:58 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-21 10:11 How to use associative arrays in Ada 2005? snoopysalive
2006-11-21 11:49 ` Georg Bauhaus
2006-11-21 14:18 ` Matthew Heaney
2006-11-21 23:35   ` snoopysalive
2006-11-23 19:27     ` snoopysalive
2006-11-23 19:40       ` Georg Bauhaus
2006-11-24  0:33       ` Georg Bauhaus
2006-11-24 11:49         ` Matthew Heaney
2006-11-24  8:27       ` Dmitry A. Kazakov
2006-11-24 11:51         ` Matthew Heaney
2006-11-26 19:05           ` snoopysalive
2006-11-26 20:30             ` Matthew Heaney
2006-11-27  9:15             ` Dmitry A. Kazakov
2006-11-27 19:53               ` Matthew Heaney
2006-11-27 21:11                 ` Dmitry A. Kazakov
2006-11-27 21:52                   ` Matthew Heaney
2006-11-28  8:29                     ` Alex R. Mosteo
2006-11-28 13:19                       ` Matthew Heaney
2006-11-28  8:34                     ` Dmitry A. Kazakov
2006-11-28 13:21                       ` Matthew Heaney
2006-11-27 21:08             ` Simon Wright
2006-11-27 22:22               ` Matthew Heaney
2006-11-27 22:58                 ` Simon Wright [this message]
2006-11-28  1:55                   ` Matthew Heaney
2006-11-24 11:35       ` Matthew Heaney
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox