In the two associative container types (CppMap, CppUnorderedMap), [] accesses a value by its key. If the key does not exist, the 
function throws an error.
In the two sequence container types (CppVector, CppDeque), [] accesses a value by its index. If the index is outside the container, this throws 
an error.
at and [] both access elements. Unlike [], at checks the bounds of the container and throws an error, if the element does 
not exist.