Dynamically Expanding an Array
Consider the following:
Code:
int *p;
p = new int[5];
for(int i=0;i<5;i++)
*(p+i)=i;
Now suppose we want to add a 6th element (without using vector)
One way is to copy it across to a larger array:
Code:
int *p;
p = new int[5];
for(int i=0;i<5;i++)
*(p+i)=i;
// realloc
int* temp = new int[6];
std::copy(p, p + 5, temp);
delete [] p;
p = temp;
This looks like a very expensive operation and im looking for other ways.
Three questions regarding the above:
- Not using vector, is this the best way to do this?
- What about using realloc? How would I use realloc in this situation?
- Any other ways apart from realloc or vector?