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.
next prev parent 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