Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::unordered_map<Key,T,Hash,KeyEqual,Allocator>::find

      From cppreference.com
      <cpp‎ |container‎ |unordered map

      [edit template]
       
       
       
      std::unordered_map
      Member types
      Member functions
      Non-member functions
      Deduction guides(C++17)
       
      iterator find(const Key& key);
      (1)(since C++11)
      (constexpr since C++26)
      const_iterator find(const Key& key)const;
      (2)(since C++11)
      (constexpr since C++26)
      template<class K>
      iterator find(const K& x);
      (3)(since C++20)
      (constexpr since C++26)
      template<class K>
      const_iterator find(const K& x)const;
      (4)(since C++20)
      (constexpr since C++26)
      1,2) Finds an element with key equivalent tokey.
      3,4) Finds an element with key that compares equivalent tox.
      This overload participates in overload resolution only ifHash andKeyEqual are bothtransparent. This assumes that suchHash is callable with bothK andKey type, and that theKeyEqual is transparent, which, together, allows calling this function without constructing an instance ofKey.

      Contents

      [edit]Parameters

      key - key value of the element to search for
      x - a value of any type that can be transparently compared with a key

      [edit]Return value

      An iterator to the requested element. If no such element is found, past-the-end (seeend()) iterator is returned.

      [edit]Complexity

      Constant on average, worst case linear in the size of the container.

      Notes

      Feature-test macroValueStdFeature
      __cpp_lib_generic_unordered_lookup201811L(C++20)Heterogeneous comparison lookup inunordered associative containers; overloads(3,4)

      [edit]Example

      Run this code
      #include <cstddef>#include <functional>#include <iostream>#include <string>#include <string_view>#include <unordered_map> usingnamespace std::literals; struct string_hash{using hash_type=std::hash<std::string_view>;using is_transparent=void; std::size_t operator()(constchar* str)const{return hash_type{}(str);}std::size_t operator()(std::string_view str)const{return hash_type{}(str);}std::size_t operator()(conststd::string& str)const{return hash_type{}(str);}}; int main(){// simple comparison demostd::unordered_map<int,char> example{{1,'a'},{2,'b'}}; if(auto search= example.find(2); search!= example.end())std::cout<<"Found "<< search->first<<' '<< search->second<<'\n';elsestd::cout<<"Not found\n"; // C++20 demo: Heterogeneous lookup for unordered containers (transparent hashing)std::unordered_map<std::string, size_t, string_hash,std::equal_to<>> map{{"one"s,1}};std::cout<<std::boolalpha<<(map.find("one")!= map.end())<<'\n'<<(map.find("one"s)!= map.end())<<'\n'<<(map.find("one"sv)!= map.end())<<'\n';}

      Output:

      Found 2 btruetruetrue

      [edit]See also

      access specified element with bounds checking
      (public member function)[edit]
      access or insert specified element
      (public member function)[edit]
      returns the number of elements matching specific key
      (public member function)[edit]
      returns range of elements matching a specific key
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/container/unordered_map/find&oldid=136040"

      [8]ページ先頭

      ©2009-2025 Movatter.jp