Because operator[]
returns a reference to the value itself and so the only way to indicate a problem would be to throw an exception (and in general, the STL rarely throws exceptions).
If you don’t like this behavior, you can use map::find
instead. It returns an iterator instead of the value. This allows it to return a special iterator when the value is not found (it returns map::end
) but also requires you to dereference the iterator to get at the value.