[LC++]can't seem to use reference

Mark Phillips mark at austrics.com.au
Wed Feb 20 12:34:38 UTC 2002


Carlo Wood wrote:
> 
> > I am considering largeStructList to be a read-only array of
> > large structures.  At each stage in the for loop I want to
> > process things involving consecutive pairs.  I could, as you
> > say, explicitly instantiate references to the two consecutive
> > objects at each iteration.  But a better way would be to use
> > the second reference at iteration i, as the first reference
> > at iteration i+1, meaning there is no need to recalculate
> > it.  Unfortunately C++ syntax does not allow this.
> 
> Well, now I know what you want...

Sorry if I wasn't clear enough before.

> 
> largeStructTy const* lsp = &largeStructList[0];                 // Single, one time assembly instruction.
> for (largeStructTy const* next_lsp = &largeStructList[1];       // Single, one time assembly instruction.
>      next_lsp < &largeStructList[N];                            // &largeStructList[N] is a constant, compared with a register.
>      ++next_lsp)                                                // Single assembly instruction.
> {
>   largeStructTy const& ls(*lsp);                // Generates no code, internally lsp and lp are the same register.
>   largeStructTy const& nextLs(*next_lsp);       // Idem, generates no code.
>   // do stuff involving the reading of ls and nextLs
>   // ...
> }

Thanks for this.  I didn't think of doing it like that.  It's still
a little messy but I guess in C++ you don't have a choice (other than
to write less efficient code).

Thanks again for your feedback.

Cheers,

Mark.



More information about the tuxCPProgramming mailing list