Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::unordered_map(3)	      C++ Standard Libary	 std::unordered_map(3)

NAME
       std::unordered_map - std::unordered_map

Synopsis
	  Defined in header <unordered_map>
	  template<

	  class	Key,
	  class	T,
	  class	 Hash  =  std::hash<Key>,				   (1)
       (since C++11)
	  class	KeyEqual = std::equal_to<Key>,
	  class	Allocator = std::allocator< std::pair<const Key, T> >

	  > class unordered_map;
	  namespace pmr	{

	  template <class Key,
	  class	T,
	  class	 Hash  =  std::hash<Key>,				   (2)
       (since C++17)
	  class	Pred = std::equal_to<Key>>
	  using	unordered_map =	std::unordered_map<Key,	T, Hash, Pred,
	  std::pmr::polymorphic_allocator<std::pair<const Key,T>>>;

	  }

	  Unordered  map  is  an associative container that contains key-value
       pairs with unique
	  keys.	Search,	insertion, and removal of elements have	 average  con-
       stant-time
	  complexity.

	  Internally, the elements are not sorted in any particular order, but
       organized into
	  buckets.  Which bucket an element is placed into depends entirely on
       the hash	of its
	  key. Keys with the same hash code appear in the  same	 bucket.  This
       allows fast access
	  to  individual  elements, since once the hash	is computed, it	refers
       to the exact
	  bucket the element is	placed into.

	  std::unordered_map meets  the	 requirements  of  Container,  Alloca-
       torAwareContainer,
	  UnorderedAssociativeContainer.

	 Iterator invalidation

			 Operations			   Invalidated
	  All read only	operations, swap, std::swap Never
	  clear, rehash, reserve, operator=	    Always
	  insert, emplace, emplace_hint, operator[] Only if causes rehash
	  erase					    Only to the	element	erased

Notes
	    * The swap functions do not	invalidate any of the iterators	inside
       the container,
	      but  they	do invalidate the iterator marking the end of the swap
       region.

	    * References and pointers to either	key or data stored in the con-
       tainer are only
	      invalidated by erasing that element, even	when the corresponding
       iterator	is
	      invalidated.

Member types
	  Member type		    Definition
	  key_type		    Key
	  mapped_type		    T
	  value_type		    std::pair<const Key, T>
	  size_type		       Unsigned	   integer    type    (usually
       std::size_t)
	  difference_type		Signed	   integer    type    (usually
       std::ptrdiff_t)
	  hasher		    Hash
	  key_equal		    KeyEqual
	  allocator_type	    Allocator
	  reference		    value_type&
	  const_reference	    const value_type&
	  pointer		    std::allocator_traits<Allocator>::pointer
	  const_pointer				 std::allocator_traits<Alloca-
       tor>::const_pointer
	  iterator		    LegacyForwardIterator to value_type
	  const_iterator	    LegacyForwardIterator to const value_type
				    An	iterator  type	whose category,	value,
       difference,
				    pointer and
	  local_iterator	    reference types are	the same as  iterator.
       This iterator
				    can	 be  used  to iterate through a	single
       bucket but not
				    across buckets
				    An iterator	type  whose  category,	value,
       difference,
				    pointer and
	  const_local_iterator	     reference types are the same as const_it-
       erator. This
				    iterator
				    can	be used	to iterate  through  a	single
       bucket but not
				    across buckets
	  node_type (since C++17)   a specialization of	node handle represent-
       ing a container
				    node
				    type  describing the result	of inserting a
       node_type, a
				    specialization of

				    template <class Iter, class	NodeType>
	  insert_return_type (since struct /*unspecified*/ {
	  C++17)		    Iter position;
				    bool inserted;
				    NodeType node;
				    };
				    instantiated with template arguments iter-
       ator and
				    node_type.

Member functions
	  constructor	    constructs the unordered_map
	  (C++11)	    (public member function)
	  destructor	    destructs the unordered_map
	  (C++11)	    (public member function)
	  operator=	    assigns values to the container
	  (C++11)	    (public member function)
	  get_allocator	    returns the	associated allocator
	  (C++11)	    (public member function)

Iterators
	  begin		    returns an iterator	to the beginning
	  cbegin	    (public member function)
	  (C++11)
	  end		    returns an iterator	to the end
	  cend		    (public member function)
	  (C++11)

Capacity
	  empty		    checks whether the container is empty
	  (C++11)	    (public member function)
	  size		    returns the	number of elements
	  (C++11)	    (public member function)
	  max_size	    returns the	maximum	possible number	of elements
	  (C++11)	    (public member function)

Modifiers
	  clear		    clears the contents
	  (C++11)	    (public member function)
			    inserts elements
	  insert	    or nodes
	  (C++11)	    (since C++17)
			    (public member function)
	  insert_or_assign  inserts an element or assigns to the current  ele-
       ment if the key
	  (C++17)	    already exists
			    (public member function)
	  emplace	    constructs element in-place
	  (C++11)	    (public member function)
	  emplace_hint	    constructs elements	in-place using a hint
	  (C++11)	    (public member function)
	  try_emplace	     inserts  in-place if the key does not exist, does
       nothing if the
	  (C++17)	    key	exists
			    (public member function)
	  erase		    erases elements
	  (C++11)	    (public member function)
	  swap		    swaps the contents
	  (C++11)	    (public member function)
	  extract	    extracts nodes from	the container
	  (C++17)	    (public member function)
	  merge		    splices nodes from another container
	  (C++17)	    (public member function)

Lookup
	  at		    access specified element with bounds checking
	  (C++11)	    (public member function)
	  operator[]	    access or insert specified element
	  (C++11)	    (public member function)
	  count		    returns the	number of elements  matching  specific
       key
	  (C++11)	    (public member function)
	  find		    finds element with specific	key
	  (C++11)	    (public member function)
	  contains	    checks if the container contains element with spe-
       cific key
	  (C++20)	    (public member function)
	  equal_range	    returns range of elements matching a specific key
	  (C++11)	    (public member function)

Bucket interface
	  begin(size_type)  returns an iterator	to the beginning of the	speci-
       fied bucket
	  cbegin(size_type) (public member function)
	  (C++11)
	  end(size_type)     returns  an  iterator to the end of the specified
       bucket
	  cend(size_type)   (public member function)
	  (C++11)
	  bucket_count	    returns the	number of buckets
	  (C++11)	    (public member function)
	  max_bucket_count  returns the	maximum	number of buckets
	  (C++11)	    (public member function)
	  bucket_size	    returns the	number of elements in specific bucket
	  (C++11)	    (public member function)
	  bucket	    returns the	bucket for specific key
	  (C++11)	    (public member function)

Hash policy
	  load_factor	    returns average number of elements per bucket
	  (C++11)	    (public member function)
	  max_load_factor   manages maximum average  number  of	 elements  per
       bucket
	  (C++11)	    (public member function)
	  rehash	     reserves at least the specified number of buckets
       and regenerates
	  (C++11)	    the	hash table
			    (public member function)
	  reserve	    reserves space for at least	the  specified	number
       of elements and
	  (C++11)	    regenerates	the hash table
			    (public member function)

Observers
	  hash_function	    returns function used to hash the keys
	  (C++11)	    (public member function)
	  key_eq	     returns  the  function  used  to compare keys for
       equality
	  (C++11)	    (public member function)

Non-member functions
	  operator==			 compares  the	values	in   the   un-
       ordered_map
	  operator!=			(function template)
	  (removed in C++20)
	  std::swap(std::unordered_map)	specializes the	std::swap algorithm
	  (C++11)			(function template)
	  erase_if(std::unordered_map)	 Erases	 all  elements satisfying spe-
       cific criteria
	  (C++20)			(function template)

	 Deduction guides(since	C++17)

Example
       // Run this code

	#include <iostream>
	#include <string>
	#include <unordered_map>

	int main()
	{
	    // Create an unordered_map of three	strings	(that map to strings)
	    std::unordered_map<std::string, std::string> u = {
		{"RED","#FF0000"},
		{"GREEN","#00FF00"},
		{"BLUE","#0000FF"}
	    };

	    // Helper lambda function to print key-value pairs
	    auto print_key_value = [](const auto& key, const auto& value) {
		std::cout << "Key:[" <<	key << "] Value:[" << value << "]\n";
	    };

	    std::cout << "Iterate and print key-value pairs of	unordered_map,
       being\n"
			 "explicit with	their types:\n";
	    for( const std::pair<const std::string, std::string>& n : u	) {
		print_key_value(n.first, n.second);
	    }

	    std::cout  <<  "\nIterate  and  print  key-value pairs using C++17
       structured binding:\n";
	    for( const auto& [key, value] : u )	{
		print_key_value(key, value);
	    }

	    // Add two new entries to the unordered_map
	    u["BLACK"] = "#000000";
	    u["WHITE"] = "#FFFFFF";

	    std::cout << "\nOutput values by key:\n"
			 "The HEX of color RED is:[" <<	u["RED"] << "]\n"
			 "The HEX  of  color  BLACK  is:["  <<	u["BLACK"]  <<
       "]\n\n";

	    std::cout << "Use operator[] with non-existent key to insert a new
       key-value pair:\n";
	    print_key_value("new_key", u["new_key"]);

	    std::cout	<<   "\nIterate	  and  print  key-value	 pairs,	 using
       `auto`;\n"
			 "new_key is now one of	the keys in the	map:\n";
	    for( const auto& n : u ) {
		print_key_value(n.first, n.second);
	    }
	}

Possible output:
	Iterate	and print key-value pairs of unordered_map, being
	explicit with their types:
	Key:[BLUE] Value:[#0000FF]
	Key:[GREEN] Value:[#00FF00]
	Key:[RED] Value:[#FF0000]

	Iterate	and print key-value pairs using	C++17 structured binding:
	Key:[BLUE] Value:[#0000FF]
	Key:[GREEN] Value:[#00FF00]
	Key:[RED] Value:[#FF0000]

	Output values by key:
	The HEX	of color RED is:[#FF0000]
	The HEX	of color BLACK is:[#000000]

	Use operator[] with non-existent key to	insert a new key-value pair:
	Key:[new_key] Value:[]

	Iterate	and print key-value pairs, using `auto`;
	new_key	is now one of the keys in the map:
	Key:[new_key] Value:[]
	Key:[WHITE] Value:[#FFFFFF]
	Key:[BLACK] Value:[#000000]
	Key:[BLUE] Value:[#0000FF]
	Key:[GREEN] Value:[#00FF00]
	Key:[RED] Value:[#FF0000]

See also
	  map collection of key-value pairs, sorted by keys, keys are unique
	      (class template)

http://cppreference.com		  2022.07.31		 std::unordered_map(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::unordered_map&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help