Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::unordered_set<Key,Hash,KeyEqual,Allocator>::find

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

      [edit template]
       
       
       
      std::unordered_set
      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 <source_location>#include <string>#include <string_view>#include <unordered_set> usingnamespace std::literals; namespace logger{bool enabled{false};} inlinevoid who(conststd::source_location sloc= std::source_location::current()){if(logger::enabled)std::cout<< sloc.function_name()<<'\n';} struct string_hash// C++20's transparent hashing{using hash_type=std::hash<std::string_view>;using is_transparent=void; std::size_t operator()(constchar* str)const{        who();return hash_type{}(str);}std::size_t operator()(std::string_view str)const{        who();return hash_type{}(str);}std::size_t operator()(conststd::string& str)const{        who();return hash_type{}(str);}}; int main(){std::unordered_set<int> example{1,2,-10}; std::cout<<"Simple comparison demo:\n"<<std::boolalpha;if(auto search= example.find(2); search!= example.end())std::cout<<"Found "<<*search<<'\n';elsestd::cout<<"Not found\n"; std::unordered_set<std::string, string_hash,std::equal_to<>> set{"one"s,"two"s};     logger::enabled=true;std::cout<<"Heterogeneous lookup for unordered containers (transparent hashing):\n"<<(set.find("one")!= set.end())<<'\n'<<(set.find("one"s)!= set.end())<<'\n'<<(set.find("one"sv)!= set.end())<<'\n';}

      Possible output:

      Simple comparison demo:Found 2Heterogeneous lookup for unordered containers (transparent hashing):std::size_t string_hash::operator()(const char*) consttruestd::size_t string_hash::operator()(const std::string&) consttruestd::size_t string_hash::operator()(std::string_view) consttrue

      [edit]See also

      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_set/find&oldid=135902"

      [8]ページ先頭

      ©2009-2025 Movatter.jp