address of array at index

C

Chris Forone

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
 
S

Stefan Ram

Chris Forone said:
does the compiler set the addresses at compile time

#include <iostream>
#include <ostream>

int const a[ 4 ]={ 0, 0, 0, 0 };

int main()
{ constexpr const int * b = a + 2;
constexpr auto diff = b - a;
::std::cout << diff << '\n'; }
 
J

James Kanze

@newsreader2.utanet.at:
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?
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().

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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,756
Messages
2,569,534
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top