CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 24 Jul 2025 16:28:52 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/map/map/operator[]/
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 24 Jul 2025 16:28:53 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"808e-lO5qVv7UV/v/HAUzoHfr6SEpJTE"
Content-Encoding: gzip
If k matches the key of an element in the container, the function returns a reference to its mapped value.
If k does not match the key of any element in the container, the function inserts a new element with that key and returns a reference to its mapped value. Notice that this always increases the container size by one, even if no mapped value is assigned to the element (the element is constructed using its default constructor).
A similar member function, map::at, has the same behavior when an element with the key exists, but throws an exception when it does not.
A call to this function is equivalent to:
Member type mapped_type is the type of the mapped values in the container, defined in map as an alias of its second template parameter (T).
Notice how the last access (to element 'd') inserts a new element in the map with that key and initialized to its default value (an empty string) even though it is accessed only to retrieve its value. Member function map::find does not produce this effect.
Output:
The function accesses an element and returns a reference that can be used to modify its mapped value. Concurrently accessing other elements is safe.
If the function inserts a new element, concurrently iterating ranges in the container is not safe.
If a new element is inserted and allocator_traits::construct cannot construct an element with k and a default-constructed mapped_type (or if mapped_type is not default constructible), it causes undefined behavior.
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
map
- map::~map
- map::map
member functions
-
map::atC++11
- map::begin
-
map::cbeginC++11
-
map::cendC++11
- map::clear
- map::count
-
map::crbeginC++11
-
map::crendC++11
-
map::emplaceC++11
-
map::emplace_hintC++11
- map::empty
- map::end
- map::equal_range
- map::erase
- map::find
- map::get_allocator
- map::insert
- map::key_comp
- map::lower_bound
- map::max_size
- map::operator[]
- map::operator=
- map::rbegin
- map::rend
- map::size
- map::swap
- map::upper_bound
- map::value_comp
-
non-member overloads
public member function
<map>
std::map::operator[]
mapped_type& operator[] (const key_type& k);
mapped_type& operator[] (const key_type& k);mapped_type& operator[] (key_type&& k);
Access element
If k does not match the key of any element in the container, the function inserts a new element with that key and returns a reference to its mapped value. Notice that this always increases the container size by one, even if no mapped value is assigned to the element (the element is constructed using its default constructor).
A similar member function, map::at, has the same behavior when an element with the key exists, but throws an exception when it does not.
A call to this function is equivalent to:
(*((this->insert(make_pair(k,mapped_type()))).first)).
Parameters
- k
- Key value of the element whose mapped value is accessed.
Member type key_type is the type of the keys for the elements stored in the container, defined in map as an alias of its first template parameter (Key).
If an rvalue (second version), the key is moved instead of copied when a new element is inserted.
Return value
A reference to the mapped value of the element with a key value equivalent to k.Member type mapped_type is the type of the mapped values in the container, defined in map as an alias of its second template parameter (T).
Example
|
|
Notice how the last access (to element 'd') inserts a new element in the map with that key and initialized to its default value (an empty string) even though it is accessed only to retrieve its value. Member function map::find does not produce this effect.
Output:
mymap['a'] is an element mymap['b'] is another element mymap['c'] is another element mymap['d'] is mymap now contains 4 elements. |
Complexity
Logarithmic in size.Iterator validity
No changes.Data races
The container is accessed, and potentially modified.The function accesses an element and returns a reference that can be used to modify its mapped value. Concurrently accessing other elements is safe.
If the function inserts a new element, concurrently iterating ranges in the container is not safe.
Exception safety
Strong guarantee: if an exception is thrown, there are no changes in the container.If a new element is inserted and allocator_traits::construct cannot construct an element with k and a default-constructed mapped_type (or if mapped_type is not default constructible), it causes undefined behavior.
See also
- map::find
- Get iterator to element (public member function)
- map::insert
- Insert elements (public member function)
- map::operator=
- Copy container content (public member function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us