Where Online Learning is simpler!
The C and C++ Include Header Files
cat -n /usr/include/c++/15/unordered_set
1 // <unordered_set> -*- C++ -*- 2 3 // Copyright (C) 2007-2025 Free Software Foundation, Inc. 4 // 5 // This file is part of the GNU ISO C++ Library. This library is free 6 // software; you can redistribute it and/or modify it under the 7 // terms of the GNU General Public License as published by the 8 // Free Software Foundation; either version 3, or (at your option) 9 // any later version. 10 11 // This library is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 16 // Under Section 7 of GPL version 3, you are granted additional 17 // permissions described in the GCC Runtime Library Exception, version 18 // 3.1, as published by the Free Software Foundation. 19 20 // You should have received a copy of the GNU General Public License and 21 // a copy of the GCC Runtime Library Exception along with this program; 22 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23 // <http://www.gnu.org/licenses/>. 24 25 /** @file include/unordered_set 26 * This is a Standard C++ Library header. 27 */ 28 29 #ifndef _GLIBCXX_UNORDERED_SET 30 #define _GLIBCXX_UNORDERED_SET 1 31 32 #ifdef _GLIBCXX_SYSHDR 33 #pragma GCC system_header 34 #endif 35 36 #include <bits/requires_hosted.h> // containers 37 38 #if __cplusplus < 201103L 39 # include <bits/c++0x_warning.h> 40 #else 41 42 #include <initializer_list> 43 #include <bits/unordered_set.h> 44 #include <bits/range_access.h> 45 #include <bits/erase_if.h> 46 47 #ifdef _GLIBCXX_DEBUG 48 # include <debug/unordered_set> 49 #endif 50 51 #define __glibcxx_want_allocator_traits_is_always_equal 52 #define __glibcxx_want_containers_ranges 53 #define __glibcxx_want_erase_if 54 #define __glibcxx_want_generic_unordered_lookup 55 #define __glibcxx_want_node_extract 56 #define __glibcxx_want_nonmember_container_access 57 #include <bits/version.h> 58 59 #if __cplusplus >= 201703L 60 #include <bits/memory_resource.h> 61 namespace std _GLIBCXX_VISIBILITY(default) 62 { 63 _GLIBCXX_BEGIN_NAMESPACE_VERSION 64 namespace pmr 65 { 66 template<typename _Key, typename _Hash = std::hash<_Key>, 67 typename _Pred = std::equal_to<_Key>> 68 using unordered_set 69 = std::unordered_set<_Key, _Hash, _Pred, 70 polymorphic_allocator<_Key>>; 71 template<typename _Key, typename _Hash = std::hash<_Key>, 72 typename _Pred = std::equal_to<_Key>> 73 using unordered_multiset 74 = std::unordered_multiset<_Key, _Hash, _Pred, 75 polymorphic_allocator<_Key>>; 76 } // namespace pmr 77 _GLIBCXX_END_NAMESPACE_VERSION 78 } // namespace std 79 #endif // C++17 80 81 #if __cplusplus > 201703L 82 namespace std _GLIBCXX_VISIBILITY(default) 83 { 84 _GLIBCXX_BEGIN_NAMESPACE_VERSION 85 template<typename _Key, typename _Hash, typename _CPred, typename _Alloc, 86 typename _Predicate> 87 inline typename unordered_set<_Key, _Hash, _CPred, _Alloc>::size_type 88 erase_if(unordered_set<_Key, _Hash, _CPred, _Alloc>& __cont, 89 _Predicate __pred) 90 { 91 _GLIBCXX_STD_C::unordered_set<_Key, _Hash, _CPred, _Alloc>& 92 __ucont = __cont; 93 return __detail::__erase_nodes_if(__cont, __ucont, __pred); 94 } 95 96 template<typename _Key, typename _Hash, typename _CPred, typename _Alloc, 97 typename _Predicate> 98 inline typename unordered_multiset<_Key, _Hash, _CPred, _Alloc>::size_type 99 erase_if(unordered_multiset<_Key, _Hash, _CPred, _Alloc>& __cont, 100 _Predicate __pred) 101 { 102 _GLIBCXX_STD_C::unordered_multiset<_Key, _Hash, _CPred, _Alloc>& 103 __ucont = __cont; 104 return __detail::__erase_nodes_if(__cont, __ucont, __pred); 105 } 106 _GLIBCXX_END_NAMESPACE_VERSION 107 } // namespace std 108 #endif // C++20 109 110 #endif // C++11 111 112 #endif // _GLIBCXX_UNORDERED_SET