I think the confusion is due to the fact that the book mistakenly says that a valid index must be <= the array size. This, as you both have mentioned, is incorrect since the largest valid index value is the array size - 1.
I think it's a typo in the book -- check if an errata page for the book exists. If so, check to see if this is already listed there. If not, submit it as a new error.
Also, Rune: There are several programming languages that begin numerically indexed arrays as 1, not 0, so you don't want to generalize that "containers in programming... are zero based." Numerically indexed arrays and vectors in Java, C, and C++ certainly are zero based, but by no means are ALL containers in ALL languages zero based.
In fact, it's REALLY REALLY easy to write a simple wrapper class around a java (or C++, etc..) vector that creates a 1-based vector.
Take care,
Nik
http://www.bigaction.org/