comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Map iteration and modification
Date: Thu, 28 Dec 2023 21:20:53 -0600	[thread overview]
Message-ID: <umldsq$na79$1@dont-email.me> (raw)
In-Reply-To: umk6ds$e9hc$1@dont-email.me

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
news:umk6ds$e9hc$1@dont-email.me...
...
> Provided a sane implementation of map.
>
> 1. It is safe to loop over the map items in the *reverse* order of, 
> deleting whatever items.

A sane implementation of a map does not have/require an ordering of keys. So 
the idea of "reverse" or "forward" does not make sense for a general map. 
(There are, of course, special cases where the keys have an order that 
matters to the map; the standard ordered map is like that.) Assuming an 
ordering is exposing the implementation unnecessarily.

You always complain about mixing implementation with interface, but you are 
clearly doing that here. That technique really only works if the data 
structure is implemented with an underlying array. If you have separately 
allocated nodes, deletion might completely destroy a node that the iterator 
is holding onto. Avoiding that takes significant efforts that sap 
performance when you don't intend to modify the container you're iterating 
(which is the usual case).

My longstanding objection to the entire concept of arrays is that they are 
not a data structure, but rather a building block for making data 
structures. One wants indexed sequences sometimes, cheap maps othertimes, 
but arrays have all of the operations needed for both, along with other 
capabilities not really related to data structures at all. It's way better 
to declare what you need and get no more (visibly, at least). That makes it 
way easier to swap implementations if that becomes necessary - you're not 
stuck with a large array that really should be managed piecemeal.

                   Randy.


  parent reply	other threads:[~2023-12-29  3:20 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-28 13:53 Map iteration and modification DrPi
2023-12-28 13:59 ` DrPi
2023-12-28 16:06   ` Dmitry A. Kazakov
2023-12-28 17:57     ` DrPi
2023-12-29  3:20     ` Randy Brukardt [this message]
2023-12-29  9:51       ` Dmitry A. Kazakov
2023-12-29 15:03         ` G.B.
2023-12-29 16:52           ` Dmitry A. Kazakov
2024-01-01 19:27             ` G.B.
2024-01-01 20:55               ` Dmitry A. Kazakov
2024-01-02 16:40                 ` G.B.
2024-01-02 20:57                   ` Dmitry A. Kazakov
2024-01-03  3:22                 ` Randy Brukardt
2024-01-03  4:05                   ` moi
2023-12-30  7:21         ` Randy Brukardt
2023-12-30 11:07           ` Dmitry A. Kazakov
2024-01-03  3:15             ` Randy Brukardt
2024-01-03 10:04               ` Dmitry A. Kazakov
2024-01-04  4:07                 ` Randy Brukardt
2024-01-04 11:28                   ` Dmitry A. Kazakov
2024-01-05  2:00                     ` Randy Brukardt
2024-01-05  9:26                       ` Simon Wright
2024-01-05 11:51                       ` Dmitry A. Kazakov
2024-01-06  7:25                         ` Randy Brukardt
2024-01-07 15:06                           ` Jeffrey R.Carter
2024-01-09  4:46                             ` Randy Brukardt
2024-01-09  5:56                               ` when-clauses (was Re: Map iteration and modification) Lawrence D'Oliveiro
2024-01-09  9:43                               ` Map iteration and modification Jeffrey R.Carter
2024-04-17 10:12                         ` Cóilín Nioclás Pól Glostéir
2024-01-06  2:54                       ` “Usability” (was Re: Map iteration and modification) Lawrence D'Oliveiro
2024-01-06  7:03                         ` "Usability" " Randy Brukardt
2024-01-06  8:14                           ` Niklas Holsti
2024-01-06 23:41                           ` Lawrence D'Oliveiro
2024-01-07  1:21                           ` J-P. Rosen
2024-01-09 15:19                             ` Bill Findlay
2024-01-09 20:30                             ` Lawrence D'Oliveiro
2023-12-29  3:08   ` Map iteration and modification Randy Brukardt
2023-12-29 13:53     ` DrPi
2023-12-30  6:29       ` Randy Brukardt
2023-12-31 13:56         ` DrPi
replies disabled

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