Re: question about operator[] of map
ThosRTanner wrote:
On Oct 27, 6:51 am, yang <double...@gmail.com> wrote:
hi, as mentioned in effective c++, when overloading [] operator, there
should be two versions: return reference and return const reference.
However, in the overloading of [] in stl map, there is only one
version: return reference. Is there any reason why this is the case?
I think its because the map.operator[a] will create the entry a if it
doesn't already exist, so is really not very const at all.
It's also a trifle annoying because you start off thinking you can do
something like if (map[a] is defined) ..... (like in perl and
javascript)
if (map.count(a)) ...
Or, if you prefer:
template<typename Map_t>
bool has_key(Map_t const& m, typename Map_t::key_type const& k) {
return m.find(k) != m.end();
}
if (has_key(map, a)) ...
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]