Re: querry related to STL map..
ravips wrote:
I have a map<char *,int> it does not work consistently. I have used
similar sort of implementation as below:
You've gotten several replies poining out that the code opies too many
characters into the allocated array. That's true, and that's a potential
problem, but it's not the cause of the match failures. The problem is
that map doesn't do anything special with a char* key. That is, two such
keys are equal if the values of the pointers are the same. So when the
code copies "May" into an allocated array, the address of that copy is
different from the address of the original, and the two keys do not
match. Further, there's no guarantee that two string literals with the
same text (i.e. "May" and "May") will have the same address, so it was
just luck that the first version of the code seemed to work.
The solution is to either provide a comparator object that calls strcmp
to compare two char*s for equality, or to use std::string instead of
char*. The latter is simpler.
--
-- Pete
Author of "The Standard C++ Library Extensions: a Tutorial and
Reference." For more information about this book, see
www.petebecker.com/tr1book.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]