If i have in C++ a pointer to a vector:
vector<int>* vecPtr;
And i’d like to access an element of the vector, then i can do this by dereferncing the vector:
int a = (*vecPtr)[i];
but will this dereferencing actually create a copy of my vector on the stack? let’s say the vector stores 10000 ints, will by dereferencing the vecPtr 10000 ints be copied?
Thanks!
10000
ints will not be copied. Dereferencing is very cheap.To make it clear you can rewrite
as
In addition, if you are afraid that the whole data stored in
vectorwill be located on the stack and you usevector<int>*instead ofvector<int>to avoid this: this is not the case.Actually only a fixed amount of memory is used on the stack (about 16-20 bytes depending on the implementation), independently of the number of elements stored in the
vector.The
vectoritself allocates memory and stores elements on the heap.