home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.std.c++
- Path: sparky!uunet!microsoft!hexnut!jimad
- From: jimad@microsoft.com (Jim Adcock)
- Subject: Re: Zero-length structures and pointer comparisons
- Message-ID: <1992Dec24.005201.1488@microsoft.com>
- Date: 24 Dec 92 00:52:01 GMT
- Organization: Microsoft Corporation
- References: <1992Dec18.204337.3084@lth.se> <1992Dec19.202043.20366@ucc.su.OZ.AU> <1992Dec20.201212.8974@lth.se>
- Lines: 33
-
- In article <1992Dec20.201212.8974@lth.se> dag@bellman.control.lth.se (Dag Bruck) writes:
- |The goal was to write data structures that use the ordering of
- |pointers to improve search time. What I need is mechanism that
- |compares the pointers -- what they actually point to is not relevant.
-
- On the contrary, you DO NOT then need such a mechanism, because alternate
- approaches not using pointers can give you similar improvements to search times.
-
- |C and C++ has some notion of equality between pointers. You can
- |clobber the semantics of this equality with memory mapping and what
- |not, but that is in my view an issue beyond the language.
-
- Agreed, as long as *you* stick to the C and C++ notion of equality
- between pointers -- which is an extremely limited notion of equality.
-
- |I would finally like to return to a claim I made earlier, but nobody
- |has commented on (as far as I know). I belive that even if you
- |imposed a total ordering on pointers in a segmented architecture
- |(e.g., Inte 8086 family), compilers would be able to handle the
- |follwing common case efficiently:
- |
- | void zap(int* a, unsigned n)
- | {
- | for (int* p = a; p < a+n; p++)
- | *p = 0;
- | }
- |
- |and produce the same code as today (without the total ordering).
- |After all, the assignment "p = a" says that "p" must point to the same
- |segment as "a". Any comments?
-
- You statement is true, but does not imply your intended conclusion,
- namely that thus one can efficiently implement total ordering.
-