Should focus on getting rid of undefined behavior.
post
I am trying C++ for this year's advent of code. The most asinine thing i encountered is that the bracket operator on std::map writes 0 value if the key is not found. So your code doesn't compile if you declare a const map or a const map reference as a function parameter. Compiler fails with "discards const qualifier on argument".
I mean, wtf?
Edit: this is probably true for other STL containers
The most asinine thing i encountered is that the bracket operator on std::map writes 0 value if the key is not found.
That's a "you're using it wrong" problem. The operator[] is designed to "Returns a reference to the value that is mapped to a key equivalent to key, performing an insertion if such key does not already exist. "
The "0 value" just so happens to be the result you get from a default initializer whose default initialization corresponds to zero-initialization.
If you want to use a std::map to access the element associated with a key, you need to either use at and handle an exception if no such key exists, or use find.
all 9 comments