Consider initializing a dictionary or associative array :
For example :
double [int] AA;
This will be dynamic in size.
Now consider initializing a dynamic array :
T A = new T (0);
U B = new U  (0,0);
This will also be dynamic in size.
In my untrained eye, this seems haphazard. One requires the use of the new keyword, the other does not. Why is it? Has It got something to do with random access mechanism? I would like to know the rationale please.