There's a lazy reason for vector. The programmer doesn't have to remember "4" in the code that indexes it, because they can use vector size. (You can use sizeof of course) Complexity like this is often a result of the engineer trying to cater for every imaginable change that could possibly be required in the future. So the engineer ends up saying, "What if we need to change these unsigned integer indexes into a list of Reticulating Splines?! Oh well, better make it some horrible templated monstrosity!" I've said it myself. Only, replace "templated monstrosity" with "cathedral of generalized reusability" :)
Stephen Coda