1212
1313#include < algorithm>
1414#include < optional>
15+ #include < ranges>
1516#include < string>
1617#include < string_view>
1718#include < vector>
@@ -37,14 +38,14 @@ inline void url_search_params::initialize(std::string_view input) {
3738
3839 if (equal == std::string_view::npos) {
3940 std::string name (current);
40- std::replace (name. begin (), name. end () , ' +' , ' ' );
41+ std::ranges:: replace (name, ' +' , ' ' );
4142 params.emplace_back (unicode::percent_decode (name, name.find (' %' )), " " );
4243 } else {
4344 std::string name (current.substr (0 , equal));
4445 std::string value (current.substr (equal + 1 ));
4546
46- std::replace (name. begin (), name. end () , ' +' , ' ' );
47- std::replace (value. begin (), value. end () , ' +' , ' ' );
47+ std::ranges:: replace (name, ' +' , ' ' );
48+ std::ranges:: replace (value, ' +' , ' ' );
4849
4950 params.emplace_back (unicode::percent_decode (name, name.find (' %' )),
5051 unicode::percent_decode (value, value.find (' %' )));
@@ -76,8 +77,8 @@ inline size_t url_search_params::size() const noexcept { return params.size(); }
7677
7778inline std::optional<std::string_view> url_search_params::get (
7879 const std::string_view key) {
79- auto entry = std::find_if (params. begin (), params. end (),
80- [&key](auto ¶m) { return param.first == key; });
80+ auto entry = std::ranges:: find_if (
81+ params, [&key](auto ¶m) { return param.first == key; });
8182
8283 if (entry == params.end ()) {
8384 return std::nullopt ;
@@ -100,17 +101,16 @@ inline std::vector<std::string> url_search_params::get_all(
100101}
101102
102103inline bool url_search_params::has (const std::string_view key) noexcept {
103- auto entry = std::find_if (params. begin (), params. end (),
104- [&key](auto ¶m) { return param.first == key; });
104+ auto entry = std::ranges:: find_if (
105+ params, [&key](auto ¶m) { return param.first == key; });
105106 return entry != params.end ();
106107}
107108
108109inline bool url_search_params::has (std::string_view key,
109110 std::string_view value) noexcept {
110- auto entry =
111- std::find_if (params.begin (), params.end (), [&key, &value](auto ¶m) {
112- return param.first == key && param.second == value;
113- });
111+ auto entry = std::ranges::find_if (params, [&key, &value](auto ¶m) {
112+ return param.first == key && param.second == value;
113+ });
114114 return entry != params.end ();
115115}
116116
@@ -122,8 +122,8 @@ inline std::string url_search_params::to_string() const {
122122 auto value = ada::unicode::percent_encode (params[i].second , character_set);
123123
124124 // Performance optimization: Move this inside percent_encode.
125- std::replace (key. begin (), key. end () , ' ' , ' +' );
126- std::replace (value. begin (), value. end () , ' ' , ' +' );
125+ std::ranges:: replace (key, ' ' , ' +' );
126+ std::ranges:: replace (value, ' ' , ' +' );
127127
128128 if (i != 0 ) {
129129 out += " &" ;
@@ -139,7 +139,7 @@ inline void url_search_params::set(const std::string_view key,
139139 const std::string_view value) {
140140 const auto find = [&key](auto ¶m) { return param.first == key; };
141141
142- auto it = std::find_if (params. begin (), params. end () , find);
142+ auto it = std::ranges:: find_if (params, find);
143143
144144 if (it == params.end ()) {
145145 params.emplace_back (key, value);
@@ -151,27 +151,21 @@ inline void url_search_params::set(const std::string_view key,
151151}
152152
153153inline void url_search_params::remove (const std::string_view key) {
154- params.erase (
155- std::remove_if (params.begin (), params.end (),
156- [&key](auto ¶m) { return param.first == key; }),
157- params.end ());
154+ std::erase_if (params, [&key](auto ¶m) { return param.first == key; });
158155}
159156
160157inline void url_search_params::remove (const std::string_view key,
161158 const std::string_view value) {
162- params.erase (std::remove_if (params.begin (), params.end (),
163- [&key, &value](auto ¶m) {
164- return param.first == key &&
165- param.second == value;
166- }),
167- params.end ());
159+ std::erase_if (params, [&key, &value](auto ¶m) {
160+ return param.first == key && param.second == value;
161+ });
168162}
169163
170164inline void url_search_params::sort () {
171- std::stable_sort (params. begin (), params. end (),
172- [](const key_value_pair &lhs, const key_value_pair &rhs) {
173- return lhs.first < rhs.first ;
174- });
165+ std::ranges:: stable_sort (
166+ params, [](const key_value_pair &lhs, const key_value_pair &rhs) {
167+ return lhs.first < rhs.first ;
168+ });
175169}
176170
177171inline url_search_params_keys_iter url_search_params::get_keys () {
0 commit comments