Re: need for operator[] in map
On Feb 7, 3:56 pm, "subramanian10...@yahoo.com, India"
<subramanian10...@yahoo.com> wrote:
For inserting new elements in map, we can use insert member function.
To know if an element exists or not in a map, we can use count or find
member function.
Also, we can use the iterator returned by find to modify the mapped
value of an existing key.
When we use operator[], it may add an element into the map if the key
already doesn't exist, which may not be always wanted.
Given this, I am unable to understand the reason as to why we have
operator[] in map whose functionality can be achieved by other member
functions.
Convenience. It's a bit awkward, in that the semantics which
would be most convenient vary according to what you're using the
map for, and in practice, I rarely use []. (But then, most of
my maps are const, so I can't.) The real question is, of
course, if [] doesn't find the element, what does it do?
In the most general case, because of such uncertainty surronding
the semantics, one could argue that map shouldn't support an
operator[] at all---that its a case of operator overloading
abuse. In practice, however, smaller, text based languages like
AWK and perl use it effectively, and it seems reasonable to
support it in the same way they do---if you are using std::map
like you'd use an array in AWK or perl, you use it (and not much
else of the interface of std::map); if you are using std::map in
some other context, you don't use it.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34