Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

address of array at index

39 views
Skip to first unread message

Chris Forone

unread,
May 18, 2013, 2:58:48 AM5/18/13
to
hello group,

i use the function std::inner_product(&arya[0], &arya[4], &aryb[0],
0.0f) with the c-style and/or c++11-style array. does the compiler set
the addresses at compile time or is there a runtime overhead to get the
addresses of array indices?

thanks & cheers, chris

Paavo Helde

unread,
May 18, 2013, 3:49:40 AM5/18/13
to
Chris Forone <4o...@gmx.at> wrote in news:kn78r4$s38$1
@newsreader2.utanet.at:
You mean, "addresses of array elements"?

In general, std::array is designed to be a minimal overhead replacement
for C arrays, so one ought to expect the runtime overhead (over a C-style
array) of an indexing operation is zero or negligible. However, this
depends on the compiler, compiler options and other settings, most
importantly on the optimization level and so-called checked iterator
support.

Anyway, any runtime overhead is probably not measurable here. I would
worry more about avoiding undefined behavior in your code, &arya[4] is an
illegal operation if the array only contains 4 elements, one should
instead use arya.end() or at least arya.data()+4. If there is a
possibility that the array is empty, then also &arya[0] becomes an
illegal operation and should be replaced by arya.begin() or arya.data().

hth
Paavo


Message has been deleted

James Kanze

unread,
May 20, 2013, 9:20:09 AM5/20/13
to
On Saturday, May 18, 2013 8:49:40 AM UTC+1, Paavo Helde wrote:
> Chris Forone <4o...@gmx.at> wrote in news:kn78r4$s38$1
> @newsreader2.utanet.at:

Alternatively, with C++11 (which is necessary for std::array)
and a C style array, one could use std::begin and std::end.
Pre-C++11, of course, you'd use the C style array and the
corresponding functions from your tool box.

--
James

0 new messages