33 #ifndef _GLIBCXX_STRING
34 #define _GLIBCXX_STRING 1
36 #pragma GCC system_header
56 #if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI
57 namespace std _GLIBCXX_VISIBILITY(default)
59 _GLIBCXX_BEGIN_NAMESPACE_VERSION
61 template<
typename _Tp>
class polymorphic_allocator;
62 template<
typename _CharT,
typename _Traits =
char_traits<_CharT>>
64 polymorphic_allocator<_CharT>>;
65 using string = basic_string<char>;
66 #ifdef _GLIBCXX_USE_CHAR8_T
67 using u8string = basic_string<char8_t>;
71 using wstring = basic_string<wchar_t>;
74 template<
typename _Str>
75 struct __hash_string_base
76 :
public __hash_base<size_t, _Str>
79 operator()(
const _Str& __s)
const noexcept
80 {
return hash<basic_string_view<typename _Str::value_type>>{}(__s); }
85 :
public __hash_string_base<pmr::string>
87 #ifdef _GLIBCXX_USE_CHAR8_T
89 struct hash<pmr::u8string>
90 :
public __hash_string_base<pmr::u8string>
95 :
public __hash_string_base<pmr::u16string>
99 :
public __hash_string_base<pmr::u32string>
103 :
public __hash_string_base<pmr::wstring>
106 _GLIBCXX_END_NAMESPACE_VERSION
110 #if __cplusplus > 201703L
111 namespace std _GLIBCXX_VISIBILITY(default)
113 _GLIBCXX_BEGIN_NAMESPACE_VERSION
115 #define __cpp_lib_erase_if 202002L
117 template<
typename _CharT,
typename _Traits,
typename _Alloc,
120 inline typename basic_string<_CharT, _Traits, _Alloc>::size_type
121 erase_if(basic_string<_CharT, _Traits, _Alloc>&
__cont, _Predicate __pred)
124 const auto __osz =
__cont.size();
125 const auto __end =
__cont.end();
126 auto __removed = std::__remove_if(
__cont.begin(), __end,
127 __ops::__pred_iter(std::ref(__pred)));
128 __cont.erase(__removed, __end);
129 return __osz -
__cont.size();
132 template<
typename _CharT,
typename _Traits,
typename _Alloc,
typename _Up>
134 inline typename basic_string<_CharT, _Traits, _Alloc>::size_type
135 erase(basic_string<_CharT, _Traits, _Alloc>&
__cont,
const _Up& __value)
138 const auto __osz =
__cont.size();
139 const auto __end =
__cont.end();
140 auto __removed = std::__remove_if(
__cont.begin(), __end,
141 __ops::__iter_equals_val(__value));
142 __cont.erase(__removed, __end);
143 return __osz -
__cont.size();
145 _GLIBCXX_END_NAMESPACE_VERSION
basic_string< char > string
A string of char.
basic_string< char32_t > u32string
A string of char32_t.
basic_string< char16_t > u16string
A string of char16_t.
basic_string< wchar_t > wstring
A string of wchar_t.
ISO C++ entities toplevel namespace is std.
GNU extensions for public use.
Managing sequences of characters and character-like objects.