Re: stl::map: return default value without inserting a new element?
On Apr 6, 8:15 pm, Kai-Uwe Bux <jkherci...@gmx.net> wrote:
Rui Maciel wrote:
Kai-Uwe Bux wrote:
[...]
Even the use of operator() matches what I expected
from std::map. Is there a reason why this feature isn't already
implemented?
I can only offer conjectures. First, storing the default value
is an overhead unnecessary for most applications of
std::map<>. Second, and probably more serious a consequence:
It would be somewhat cumbersome to use the modified map<>
template with value_types that don't support default
construction because, in those cases, you would have to
designate a not_found_value manually.
Most likely, it was simply that they had to choose some
behavior, and since creating a new element is what AWK, perl and
a number of other programs do... It has the disadvantage that
you can't use [] on a const map, in addition to requiring a
default constructor for the object.
My initial associative arrays (hash tables) had the same
behavior, but over time, the problems with const made me change.
My current version returns a pointer, rather than a reference,
with a null pointer if the element isn't found. Which isn't
always the best solution either---I'm fairly convinced that
there is no best solution, and whatever you choose will be less
than ideal for some applications.
--
James Kanze