This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of CD1 status.
unordered_map
needs an at()
member functionSection: 23.5.3.3 [unord.map.elem] Status: CD1 Submitter: Joe Gottman Opened: 2007-11-15 Last modified: 2016-01-28
Priority: Not Prioritized
View all issues with CD1 status.
Discussion:
The new member function at()
was recently added to std::map()
. It acts
like operator[]()
, except it throws an exception when the input key is
not found. It is useful when the map
is const
, the value_type
of the
key doesn't have a default constructor, it is an error if the key is
not found, or the user wants to avoid accidentally adding an element to
the map. For exactly these same reasons, at()
would be equally useful
in std::unordered_map
.
Proposed resolution:
Add the following functions to the definition of unordered_map
under "lookup" (23.5.3 [unord.map]):
mapped_type& at(const key_type& k); const mapped_type &at(const key_type &k) const;
Add the following definitions to 23.5.3.3 [unord.map.elem]:
mapped_type& at(const key_type& k); const mapped_type &at(const key_type &k) const;Returns: A reference to
x.second
, wherex
is the (unique) element whose key is equivalent tok
.Throws: An exception object of type
out_of_range
if no such element is present.
[ Bellevue: Editorial note: the "(unique)" differs from map. ]