I have seen sample code similar to the following:
std::string s = "Hello World!";
std::map<char, std::size_t> h;
for (std::string::const_iterator i=s.cbegin(); i!=s.cend(); ++i)
{
++h[*i];
}
assert(h['l'] == 3);
This seems to rely on the value type being zeroed on the first occurence of each letter. Is this guaranteed even when using something like a std::size_t which has no default constructor resetting it to zero?
Indeed that’s how
mapworks: The[]-operator is mutating and will create the object of mapped type if it does not exist yet. Sincesize_tvalue-initializes to zero, you’re all fine.