From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Containers - nontrivial element access
Date: Mon, 01 Oct 2007 14:55:59 -0700
Date: 2007-10-01T14:55:59-07:00 [thread overview]
Message-ID: <1191275759.184463.238350@n39g2000hsh.googlegroups.com> (raw)
I was thinking recently about what is wrong with the containers
interface. ;-)
Consider the following problem:
There is a record type (for example Person) with a couple of fields
(for example Salary) that together make the whole a bit heavy, so that
unnecessary copying of the whole is to be avoided. Objects of this
type are stored in the container.
I would like to swap salaries of two guys which I can refer with the
index/iterator/cursor/etc. The reference method is not really
important - what is important is the problem of modifying more than
one element in the container.
C++ example is easy:
vector<Person> people;
// ...
swap(people[x].salary, people[y].salary);
I hope it is obvious what it does (suppose x and y are some indices
into the vector). Just in case it isn't - all the components of the
two records stay intact except the salary, which is swapped between
the two. C++ makes it possible by explicitly returning a reference
from the method that accesses the element.
What would you suggest as the Ada solution for this problem?
The Update_Element procedure with its access to the user-provided
modifying procedure requires to pass data "under the table" (like with
a separate variable declared aside the modifying procedure) - and
seems to be just clunky. Is this the only possibility?
--
Maciej Sobczak * www.msobczak.com * www.inspirel.com
next reply other threads:[~2007-10-01 21:55 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-01 21:55 Maciej Sobczak [this message]
2007-10-01 23:52 ` Containers - nontrivial element access Alex R. Mosteo
2007-10-02 16:40 ` Matthew Heaney
2007-10-02 23:16 ` Alex R. Mosteo
2007-10-02 20:47 ` Maciej Sobczak
2007-10-02 23:23 ` Alex R. Mosteo
2007-10-02 0:39 ` Jeffrey R. Carter
2007-10-02 16:44 ` Matthew Heaney
2007-10-03 0:20 ` Jeffrey R. Carter
2007-10-03 19:40 ` Maciej Sobczak
2007-10-03 19:56 ` Matthew Heaney
2007-10-03 20:21 ` Dmitry A. Kazakov
2007-10-03 22:37 ` Matthew Heaney
2007-10-04 8:06 ` Dmitry A. Kazakov
2007-10-03 22:02 ` Jeffrey R. Carter
2007-10-04 0:16 ` Robert A Duff
2007-10-07 8:41 ` Jacob Sparre Andersen
2007-10-11 19:15 ` Robert A Duff
2007-10-14 4:59 ` Jacob Sparre Andersen
2007-10-14 7:24 ` Dmitry A. Kazakov
2007-10-14 13:49 ` Georg Bauhaus
2007-10-14 15:07 ` Dmitry A. Kazakov
2007-10-02 20:50 ` Maciej Sobczak
2007-10-03 0:22 ` Jeffrey R. Carter
2007-10-03 8:26 ` Dmitry A. Kazakov
2007-10-03 18:49 ` Jeffrey R. Carter
2007-10-03 19:09 ` Matthew Heaney
2007-10-03 19:15 ` Simon Wright
2007-10-03 19:48 ` Maciej Sobczak
2007-10-03 19:58 ` Matthew Heaney
2007-10-03 19:35 ` Dmitry A. Kazakov
2007-10-02 2:34 ` Randy Brukardt
2007-10-02 16:47 ` Matthew Heaney
2007-10-02 7:23 ` Dmitry A. Kazakov
2007-10-02 16:37 ` Matthew Heaney
2007-10-02 21:02 ` Maciej Sobczak
2007-10-02 22:20 ` Matthew Heaney
2007-10-03 19:59 ` Maciej Sobczak
2007-10-03 22:55 ` Matthew Heaney
2007-10-04 0:22 ` Robert A Duff
2007-10-04 13:01 ` Georg Bauhaus
2007-10-04 14:01 ` Matthew Heaney
2007-10-04 21:58 ` 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