Just as a regular pointer to an array
guarantees that there is a pointer
value pointing past the last element
of the array,so for any iterator type
there is an iterator value that points
past the last element of a
corresponding container. These values
are called past-the-end values. Values
of an iterator i for which the
expression *i is defined are called
dereferenceable. The library never
assumes that past-the-end values are
dereferenceable. Iterators can also
have singular values that are not
associated with any container.
[Example: After the declaration of an
uninitialized pointer x (as with int*
x;),x must always be assumed to have
a singular value of a pointer.]
Results of most expressions are
undefined for singular values; the
only exception is an assignment of a
non-singular value to an iterator that
holds a singular value. In this case
the singular value is overwritten the
same way as any other value.
Dereferenceable values are always
nonsingular.
>什么是奇异值和非奇异值?他们如何定义?在哪里?
>如何以及为什么无法理解的价值观永远是非奇异的?
解决方法
Iterators can also have singular values that are not associated with any container.
我想这是它的定义.
How and why dereferenceable values are always nonsingular?
因为如果不这样做,那么取消引用它们就是未定义的行为.