mbed-os5 only for TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 1:9db0e321a9f4 1 /* mbed Microcontroller Library
kenjiArai 1:9db0e321a9f4 2 * Copyright (c) 2019 ARM Limited
kenjiArai 1:9db0e321a9f4 3 * SPDX-License-Identifier: Apache-2.0
kenjiArai 1:9db0e321a9f4 4 *
kenjiArai 1:9db0e321a9f4 5 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 1:9db0e321a9f4 6 * you may not use this file except in compliance with the License.
kenjiArai 1:9db0e321a9f4 7 * You may obtain a copy of the License at
kenjiArai 1:9db0e321a9f4 8 *
kenjiArai 1:9db0e321a9f4 9 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 1:9db0e321a9f4 10 *
kenjiArai 1:9db0e321a9f4 11 * Unless required by applicable law or agreed to in writing, software
kenjiArai 1:9db0e321a9f4 12 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 1:9db0e321a9f4 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 1:9db0e321a9f4 14 * See the License for the specific language governing permissions and
kenjiArai 1:9db0e321a9f4 15 * limitations under the License.
kenjiArai 1:9db0e321a9f4 16 */
kenjiArai 1:9db0e321a9f4 17 #ifndef MSTD_ALGORITHM_
kenjiArai 1:9db0e321a9f4 18 #define MSTD_ALGORITHM_
kenjiArai 1:9db0e321a9f4 19
kenjiArai 1:9db0e321a9f4 20 /* <mstd_algorithm>
kenjiArai 1:9db0e321a9f4 21 *
kenjiArai 1:9db0e321a9f4 22 * - provides <algorithm>
kenjiArai 1:9db0e321a9f4 23 * - For ARM C 5, standard C++11/14 features:
kenjiArai 1:9db0e321a9f4 24 * - std::min, std::max for std::initializer_list
kenjiArai 1:9db0e321a9f4 25 * - std::all_of, std::any_of, std::none_of
kenjiArai 1:9db0e321a9f4 26 * - std::find_if_not
kenjiArai 1:9db0e321a9f4 27 * - std::equal (2-range forms)
kenjiArai 1:9db0e321a9f4 28 * - std::copy_n, std::move, std::move_backward
kenjiArai 1:9db0e321a9f4 29 * - mstd::min, mstd::max constexpr replacements
kenjiArai 1:9db0e321a9f4 30 */
kenjiArai 1:9db0e321a9f4 31
kenjiArai 1:9db0e321a9f4 32 #include <algorithm>
kenjiArai 1:9db0e321a9f4 33
kenjiArai 1:9db0e321a9f4 34 #ifdef __CC_ARM
kenjiArai 1:9db0e321a9f4 35 #include <mstd_utility>
kenjiArai 1:9db0e321a9f4 36 #endif
kenjiArai 1:9db0e321a9f4 37
kenjiArai 1:9db0e321a9f4 38 namespace mstd {
kenjiArai 1:9db0e321a9f4 39 #ifdef __CC_ARM
kenjiArai 1:9db0e321a9f4 40 // Really want basic min/max to be constexpr as per C++14
kenjiArai 1:9db0e321a9f4 41 template <typename T>
kenjiArai 1:9db0e321a9f4 42 constexpr const T &max(const T &a, const T &b)
kenjiArai 1:9db0e321a9f4 43 {
kenjiArai 1:9db0e321a9f4 44 return a < b ? b : a;
kenjiArai 1:9db0e321a9f4 45 }
kenjiArai 1:9db0e321a9f4 46
kenjiArai 1:9db0e321a9f4 47 template <typename T, class Compare>
kenjiArai 1:9db0e321a9f4 48 constexpr const T &max(const T &a, const T &b, Compare comp)
kenjiArai 1:9db0e321a9f4 49 {
kenjiArai 1:9db0e321a9f4 50 return comp(a, b) ? b : a;
kenjiArai 1:9db0e321a9f4 51 }
kenjiArai 1:9db0e321a9f4 52
kenjiArai 1:9db0e321a9f4 53 template <typename T>
kenjiArai 1:9db0e321a9f4 54 constexpr const T &min(const T &a, const T &b)
kenjiArai 1:9db0e321a9f4 55 {
kenjiArai 1:9db0e321a9f4 56 return b < a ? b : a;
kenjiArai 1:9db0e321a9f4 57 }
kenjiArai 1:9db0e321a9f4 58
kenjiArai 1:9db0e321a9f4 59 template <typename T>
kenjiArai 1:9db0e321a9f4 60 constexpr const T &min(const T &a, const T &b, Compare comp)
kenjiArai 1:9db0e321a9f4 61 {
kenjiArai 1:9db0e321a9f4 62 return comp(b, a) ? b : a;
kenjiArai 1:9db0e321a9f4 63 }
kenjiArai 1:9db0e321a9f4 64
kenjiArai 1:9db0e321a9f4 65 // Maybe sort out C++14 constexpr for these later - these are C++11 at least
kenjiArai 1:9db0e321a9f4 66 template <typename T>
kenjiArai 1:9db0e321a9f4 67 T max(initializer_list<T> il)
kenjiArai 1:9db0e321a9f4 68 {
kenjiArai 1:9db0e321a9f4 69 return *std::max_element(begin(il), end(il));
kenjiArai 1:9db0e321a9f4 70 }
kenjiArai 1:9db0e321a9f4 71
kenjiArai 1:9db0e321a9f4 72 template <typename T, class Compare>
kenjiArai 1:9db0e321a9f4 73 T max(initializer_list<T> il, Compare comp)
kenjiArai 1:9db0e321a9f4 74 {
kenjiArai 1:9db0e321a9f4 75 return *std::max_element(begin(il), end(il), comp);
kenjiArai 1:9db0e321a9f4 76 }
kenjiArai 1:9db0e321a9f4 77
kenjiArai 1:9db0e321a9f4 78 template <typename T>
kenjiArai 1:9db0e321a9f4 79 T min(initializer_list<T> il)
kenjiArai 1:9db0e321a9f4 80 {
kenjiArai 1:9db0e321a9f4 81 return *std::min_element(begin(il), end(il));
kenjiArai 1:9db0e321a9f4 82 }
kenjiArai 1:9db0e321a9f4 83
kenjiArai 1:9db0e321a9f4 84 template <typename T, class Compare>
kenjiArai 1:9db0e321a9f4 85 T min(initializer_list<T> il, Compare comp)
kenjiArai 1:9db0e321a9f4 86 {
kenjiArai 1:9db0e321a9f4 87 return *std::min_element(begin(il), end(il), comp);
kenjiArai 1:9db0e321a9f4 88 }
kenjiArai 1:9db0e321a9f4 89
kenjiArai 1:9db0e321a9f4 90 template <typename T1, typename T2>
kenjiArai 1:9db0e321a9f4 91 class pair;
kenjiArai 1:9db0e321a9f4 92
kenjiArai 1:9db0e321a9f4 93 template <typename T>
kenjiArai 1:9db0e321a9f4 94 constexpr pair<const T &, const T &> minmax(const T &a, const T &b)
kenjiArai 1:9db0e321a9f4 95 {
kenjiArai 1:9db0e321a9f4 96 if (b < a) {
kenjiArai 1:9db0e321a9f4 97 return pair<const T &, const T &>(b, a);
kenjiArai 1:9db0e321a9f4 98 } else {
kenjiArai 1:9db0e321a9f4 99 return pair<const T &, const T &>(a, b);
kenjiArai 1:9db0e321a9f4 100 }
kenjiArai 1:9db0e321a9f4 101 }
kenjiArai 1:9db0e321a9f4 102
kenjiArai 1:9db0e321a9f4 103 template <typename T, class Compare>
kenjiArai 1:9db0e321a9f4 104 constexpr pair<const T &, const T &> minmax(const T &a, const T &b, Compare comp)
kenjiArai 1:9db0e321a9f4 105 {
kenjiArai 1:9db0e321a9f4 106 if (comp(b, a)) {
kenjiArai 1:9db0e321a9f4 107 return pair<const T &, const T &>(b, a);
kenjiArai 1:9db0e321a9f4 108 } else {
kenjiArai 1:9db0e321a9f4 109 return pair<const T &, const T &>(a, b);
kenjiArai 1:9db0e321a9f4 110 }
kenjiArai 1:9db0e321a9f4 111 }
kenjiArai 1:9db0e321a9f4 112 #else
kenjiArai 1:9db0e321a9f4 113 using std::min;
kenjiArai 1:9db0e321a9f4 114 using std::max;
kenjiArai 1:9db0e321a9f4 115 using std::minmax;
kenjiArai 1:9db0e321a9f4 116 #endif
kenjiArai 1:9db0e321a9f4 117 }
kenjiArai 1:9db0e321a9f4 118
kenjiArai 1:9db0e321a9f4 119 #ifdef __CC_ARM
kenjiArai 1:9db0e321a9f4 120
kenjiArai 1:9db0e321a9f4 121 namespace std {
kenjiArai 1:9db0e321a9f4 122 // [alg.all_of]
kenjiArai 1:9db0e321a9f4 123 template <class InputIterator, class Predicate>
kenjiArai 1:9db0e321a9f4 124 bool all_of(InputIterator first, InputIterator last, Predicate pred)
kenjiArai 1:9db0e321a9f4 125 {
kenjiArai 1:9db0e321a9f4 126 for (; first != last; ++first) {
kenjiArai 1:9db0e321a9f4 127 if (!pred(*first)) {
kenjiArai 1:9db0e321a9f4 128 return false;
kenjiArai 1:9db0e321a9f4 129 }
kenjiArai 1:9db0e321a9f4 130 }
kenjiArai 1:9db0e321a9f4 131 return true;
kenjiArai 1:9db0e321a9f4 132 }
kenjiArai 1:9db0e321a9f4 133
kenjiArai 1:9db0e321a9f4 134 // [alg.any_of]
kenjiArai 1:9db0e321a9f4 135 template <class InputIterator, class Predicate>
kenjiArai 1:9db0e321a9f4 136 bool any_of(InputIterator first, InputIterator last, Predicate pred)
kenjiArai 1:9db0e321a9f4 137 {
kenjiArai 1:9db0e321a9f4 138 for (; first != last; ++first) {
kenjiArai 1:9db0e321a9f4 139 if (pred(*first)) {
kenjiArai 1:9db0e321a9f4 140 return true;
kenjiArai 1:9db0e321a9f4 141 }
kenjiArai 1:9db0e321a9f4 142 }
kenjiArai 1:9db0e321a9f4 143 return false;
kenjiArai 1:9db0e321a9f4 144 }
kenjiArai 1:9db0e321a9f4 145
kenjiArai 1:9db0e321a9f4 146 // [alg.none_of]
kenjiArai 1:9db0e321a9f4 147 template <class InputIterator, class Predicate>
kenjiArai 1:9db0e321a9f4 148 bool none_of(InputIterator first, InputIterator last, Predicate pred)
kenjiArai 1:9db0e321a9f4 149 {
kenjiArai 1:9db0e321a9f4 150 for (; first != last; ++first) {
kenjiArai 1:9db0e321a9f4 151 if (pred(*first)) {
kenjiArai 1:9db0e321a9f4 152 return false;
kenjiArai 1:9db0e321a9f4 153 }
kenjiArai 1:9db0e321a9f4 154 }
kenjiArai 1:9db0e321a9f4 155 return true;
kenjiArai 1:9db0e321a9f4 156 }
kenjiArai 1:9db0e321a9f4 157
kenjiArai 1:9db0e321a9f4 158 // [alg.find]
kenjiArai 1:9db0e321a9f4 159 template<class InputIterator, class Predicate>
kenjiArai 1:9db0e321a9f4 160 InputIterator find_if_not(InputIterator first, InputIterator last, Predicate pred)
kenjiArai 1:9db0e321a9f4 161 {
kenjiArai 1:9db0e321a9f4 162 for (; first != last; ++first) {
kenjiArai 1:9db0e321a9f4 163 if (!pred(*first)) {
kenjiArai 1:9db0e321a9f4 164 return first;
kenjiArai 1:9db0e321a9f4 165 }
kenjiArai 1:9db0e321a9f4 166 }
kenjiArai 1:9db0e321a9f4 167 return first;
kenjiArai 1:9db0e321a9f4 168 }
kenjiArai 1:9db0e321a9f4 169
kenjiArai 1:9db0e321a9f4 170 // [alg.equal]
kenjiArai 1:9db0e321a9f4 171 namespace impl {
kenjiArai 1:9db0e321a9f4 172 template<class RandomAccessIterator1, class RandomAccessIterator2>
kenjiArai 1:9db0e321a9f4 173 bool equal(RandomAccessIterator1 first1, RandomAccessIterator1 last1,
kenjiArai 1:9db0e321a9f4 174 RandomAccessIterator2 first2, RandomAccessIterator2 last2,
kenjiArai 1:9db0e321a9f4 175 random_access_iterator_tag,
kenjiArai 1:9db0e321a9f4 176 random_access_iterator_tag)
kenjiArai 1:9db0e321a9f4 177 {
kenjiArai 1:9db0e321a9f4 178 if (last1 - first1 != last2 - first2) {
kenjiArai 1:9db0e321a9f4 179 return false;
kenjiArai 1:9db0e321a9f4 180 }
kenjiArai 1:9db0e321a9f4 181 return equal(first1, last1, first2);
kenjiArai 1:9db0e321a9f4 182 }
kenjiArai 1:9db0e321a9f4 183
kenjiArai 1:9db0e321a9f4 184 template<class RandomAccessIterator1, class RandomAccessIterator2, class BinaryPredicate>
kenjiArai 1:9db0e321a9f4 185 bool equal(RandomAccessIterator1 first1, RandomAccessIterator1 last1,
kenjiArai 1:9db0e321a9f4 186 RandomAccessIterator2 first2, RandomAccessIterator2 last2,
kenjiArai 1:9db0e321a9f4 187 BinaryPredicate pred,
kenjiArai 1:9db0e321a9f4 188 random_access_iterator_tag,
kenjiArai 1:9db0e321a9f4 189 random_access_iterator_tag)
kenjiArai 1:9db0e321a9f4 190 {
kenjiArai 1:9db0e321a9f4 191 if (last1 - first1 != last2 - first2) {
kenjiArai 1:9db0e321a9f4 192 return false;
kenjiArai 1:9db0e321a9f4 193 }
kenjiArai 1:9db0e321a9f4 194 return equal(first1, last1, first2, pred);
kenjiArai 1:9db0e321a9f4 195 }
kenjiArai 1:9db0e321a9f4 196
kenjiArai 1:9db0e321a9f4 197 template<class InputIterator1, class InputIterator2>
kenjiArai 1:9db0e321a9f4 198 bool equal(InputIterator1 first1, InputIterator1 last1,
kenjiArai 1:9db0e321a9f4 199 InputIterator2 first2, InputIterator2 last2,
kenjiArai 1:9db0e321a9f4 200 input_iterator_tag,
kenjiArai 1:9db0e321a9f4 201 input_iterator_tag)
kenjiArai 1:9db0e321a9f4 202 {
kenjiArai 1:9db0e321a9f4 203 for (; first1 != last1 && first2 != last2; ++first1, ++first2) {
kenjiArai 1:9db0e321a9f4 204 if (!(*first1 == *first2)) {
kenjiArai 1:9db0e321a9f4 205 return false;
kenjiArai 1:9db0e321a9f4 206 }
kenjiArai 1:9db0e321a9f4 207 }
kenjiArai 1:9db0e321a9f4 208 return first1 == last1 && first2 == last2;
kenjiArai 1:9db0e321a9f4 209 }
kenjiArai 1:9db0e321a9f4 210
kenjiArai 1:9db0e321a9f4 211 template<class InputIterator1, class InputIterator2, class BinaryPredicate>
kenjiArai 1:9db0e321a9f4 212 bool equal(InputIterator1 first1, InputIterator1 last1,
kenjiArai 1:9db0e321a9f4 213 InputIterator2 first2, InputIterator2 last2,
kenjiArai 1:9db0e321a9f4 214 BinaryPredicate pred,
kenjiArai 1:9db0e321a9f4 215 input_iterator_tag,
kenjiArai 1:9db0e321a9f4 216 input_iterator_tag)
kenjiArai 1:9db0e321a9f4 217 {
kenjiArai 1:9db0e321a9f4 218 for (; first1 != last1 && first2 != last2; ++first1, ++first2) {
kenjiArai 1:9db0e321a9f4 219 if (!pred(*first1, *first2)) {
kenjiArai 1:9db0e321a9f4 220 return false;
kenjiArai 1:9db0e321a9f4 221 }
kenjiArai 1:9db0e321a9f4 222 }
kenjiArai 1:9db0e321a9f4 223 return first1 == last1 && first2 == last2;
kenjiArai 1:9db0e321a9f4 224 }
kenjiArai 1:9db0e321a9f4 225 }
kenjiArai 1:9db0e321a9f4 226
kenjiArai 1:9db0e321a9f4 227 template<class InputIterator1, class InputIterator2>
kenjiArai 1:9db0e321a9f4 228 bool equal(InputIterator1 first1, InputIterator1 last1,
kenjiArai 1:9db0e321a9f4 229 InputIterator2 first2, InputIterator2 last2)
kenjiArai 1:9db0e321a9f4 230 {
kenjiArai 1:9db0e321a9f4 231 return impl::equal(first1, last1, first2, last2,
kenjiArai 1:9db0e321a9f4 232 typename iterator_traits<InputIterator1>::iterator_category(),
kenjiArai 1:9db0e321a9f4 233 typename iterator_traits<InputIterator2>::iterator_category());
kenjiArai 1:9db0e321a9f4 234 }
kenjiArai 1:9db0e321a9f4 235
kenjiArai 1:9db0e321a9f4 236 template<class InputIterator1, class InputIterator2, class BinaryPredicate>
kenjiArai 1:9db0e321a9f4 237 bool equal(InputIterator1 first1, InputIterator1 last1,
kenjiArai 1:9db0e321a9f4 238 InputIterator2 first2, InputIterator2 last2,
kenjiArai 1:9db0e321a9f4 239 BinaryPredicate pred)
kenjiArai 1:9db0e321a9f4 240 {
kenjiArai 1:9db0e321a9f4 241 return impl::equal(first1, last1, first2, last2, pred,
kenjiArai 1:9db0e321a9f4 242 typename iterator_traits<InputIterator1>::iterator_category(),
kenjiArai 1:9db0e321a9f4 243 typename iterator_traits<InputIterator2>::iterator_category());
kenjiArai 1:9db0e321a9f4 244
kenjiArai 1:9db0e321a9f4 245 }
kenjiArai 1:9db0e321a9f4 246
kenjiArai 1:9db0e321a9f4 247 // [alg.copy]
kenjiArai 1:9db0e321a9f4 248
kenjiArai 1:9db0e321a9f4 249 namespace impl
kenjiArai 1:9db0e321a9f4 250 {
kenjiArai 1:9db0e321a9f4 251 template<class RandomAccessIterator, class Size, class OutputIterator>
kenjiArai 1:9db0e321a9f4 252 OutputIterator copy_n(RandomAccessIterator first, Size n, OutputIterator result, random_access_iterator_tag)
kenjiArai 1:9db0e321a9f4 253 {
kenjiArai 1:9db0e321a9f4 254 // presumably this should have memcpy etc optimisations
kenjiArai 1:9db0e321a9f4 255 return std::copy(first, first + n, result);
kenjiArai 1:9db0e321a9f4 256 }
kenjiArai 1:9db0e321a9f4 257
kenjiArai 1:9db0e321a9f4 258 template<class InputIterator, class Size, class OutputIterator>
kenjiArai 1:9db0e321a9f4 259 OutputIterator copy_n(InputIterator first, Size n, OutputIterator result, input_iterator_tag)
kenjiArai 1:9db0e321a9f4 260 {
kenjiArai 1:9db0e321a9f4 261 for (Size i = 0; i < n; ++i) {
kenjiArai 1:9db0e321a9f4 262 *result++ = *first++;
kenjiArai 1:9db0e321a9f4 263 }
kenjiArai 1:9db0e321a9f4 264 return result;
kenjiArai 1:9db0e321a9f4 265 }
kenjiArai 1:9db0e321a9f4 266 }
kenjiArai 1:9db0e321a9f4 267
kenjiArai 1:9db0e321a9f4 268 template<class InputIterator, class Size, class OutputIterator>
kenjiArai 1:9db0e321a9f4 269 OutputIterator copy_n(InputIterator first, Size n, OutputIterator result)
kenjiArai 1:9db0e321a9f4 270 {
kenjiArai 1:9db0e321a9f4 271 return impl::copy_n(first, n, result,
kenjiArai 1:9db0e321a9f4 272 typename iterator_traits<InputIterator>::iterator_category());
kenjiArai 1:9db0e321a9f4 273 }
kenjiArai 1:9db0e321a9f4 274
kenjiArai 1:9db0e321a9f4 275 template<class InputIterator, class OutputIterator, class Predicate>
kenjiArai 1:9db0e321a9f4 276 OutputIterator copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred)
kenjiArai 1:9db0e321a9f4 277 {
kenjiArai 1:9db0e321a9f4 278 for (; first != last; ++first) {
kenjiArai 1:9db0e321a9f4 279 if (pred(*first)) {
kenjiArai 1:9db0e321a9f4 280 *result++ = *first;
kenjiArai 1:9db0e321a9f4 281 }
kenjiArai 1:9db0e321a9f4 282 }
kenjiArai 1:9db0e321a9f4 283 return result;
kenjiArai 1:9db0e321a9f4 284 }
kenjiArai 1:9db0e321a9f4 285
kenjiArai 1:9db0e321a9f4 286 // [alg.move]
kenjiArai 1:9db0e321a9f4 287
kenjiArai 1:9db0e321a9f4 288 template<class InputIterator, class OutputIterator>
kenjiArai 1:9db0e321a9f4 289 OutputIterator move(InputIterator first, InputIterator last, OutputIterator result)
kenjiArai 1:9db0e321a9f4 290 {
kenjiArai 1:9db0e321a9f4 291 while (first != last) {
kenjiArai 1:9db0e321a9f4 292 *result++ = std::move(*first++);
kenjiArai 1:9db0e321a9f4 293 }
kenjiArai 1:9db0e321a9f4 294 return result;
kenjiArai 1:9db0e321a9f4 295 }
kenjiArai 1:9db0e321a9f4 296
kenjiArai 1:9db0e321a9f4 297 template<class BidirectionalIterator1, class BidirectionalIterator2>
kenjiArai 1:9db0e321a9f4 298 BidirectionalIterator2 move_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, BidirectionalIterator2 result)
kenjiArai 1:9db0e321a9f4 299 {
kenjiArai 1:9db0e321a9f4 300 while (last != first) {
kenjiArai 1:9db0e321a9f4 301 *--result = std::move(*--last);
kenjiArai 1:9db0e321a9f4 302 }
kenjiArai 1:9db0e321a9f4 303 return result;
kenjiArai 1:9db0e321a9f4 304 }
kenjiArai 1:9db0e321a9f4 305
kenjiArai 1:9db0e321a9f4 306 }
kenjiArai 1:9db0e321a9f4 307
kenjiArai 1:9db0e321a9f4 308 #endif // __CC_ARM
kenjiArai 1:9db0e321a9f4 309
kenjiArai 1:9db0e321a9f4 310 namespace mstd
kenjiArai 1:9db0e321a9f4 311 {
kenjiArai 1:9db0e321a9f4 312 using std::initializer_list;
kenjiArai 1:9db0e321a9f4 313 using std::all_of;
kenjiArai 1:9db0e321a9f4 314 using std::any_of;
kenjiArai 1:9db0e321a9f4 315 using std::none_of;
kenjiArai 1:9db0e321a9f4 316 using std::for_each;
kenjiArai 1:9db0e321a9f4 317 using std::find;
kenjiArai 1:9db0e321a9f4 318 using std::find_if;
kenjiArai 1:9db0e321a9f4 319 using std::find_if_not;
kenjiArai 1:9db0e321a9f4 320 using std::find_end;
kenjiArai 1:9db0e321a9f4 321 using std::find_first_of;
kenjiArai 1:9db0e321a9f4 322 using std::adjacent_find;
kenjiArai 1:9db0e321a9f4 323 using std::count;
kenjiArai 1:9db0e321a9f4 324 using std::count_if;
kenjiArai 1:9db0e321a9f4 325 using std::mismatch;
kenjiArai 1:9db0e321a9f4 326 using std::equal;
kenjiArai 1:9db0e321a9f4 327 using std::search;
kenjiArai 1:9db0e321a9f4 328 using std::search_n;
kenjiArai 1:9db0e321a9f4 329 using std::copy;
kenjiArai 1:9db0e321a9f4 330 using std::copy_n;
kenjiArai 1:9db0e321a9f4 331 using std::copy_if;
kenjiArai 1:9db0e321a9f4 332 using std::move;
kenjiArai 1:9db0e321a9f4 333 using std::move_backward;
kenjiArai 1:9db0e321a9f4 334 using std::swap_ranges;
kenjiArai 1:9db0e321a9f4 335 using std::iter_swap;
kenjiArai 1:9db0e321a9f4 336 using std::transform;
kenjiArai 1:9db0e321a9f4 337 using std::replace;
kenjiArai 1:9db0e321a9f4 338 using std::replace_if;
kenjiArai 1:9db0e321a9f4 339 using std::replace_copy;
kenjiArai 1:9db0e321a9f4 340 using std::replace_copy_if;
kenjiArai 1:9db0e321a9f4 341 using std::fill;
kenjiArai 1:9db0e321a9f4 342 using std::fill_n;
kenjiArai 1:9db0e321a9f4 343 using std::generate;
kenjiArai 1:9db0e321a9f4 344 using std::generate_n;
kenjiArai 1:9db0e321a9f4 345 using std::remove;
kenjiArai 1:9db0e321a9f4 346 using std::remove_if;
kenjiArai 1:9db0e321a9f4 347 using std::remove_copy;
kenjiArai 1:9db0e321a9f4 348 using std::remove_copy_if;
kenjiArai 1:9db0e321a9f4 349 using std::unique;
kenjiArai 1:9db0e321a9f4 350 using std::unique_copy;
kenjiArai 1:9db0e321a9f4 351 using std::reverse;
kenjiArai 1:9db0e321a9f4 352 using std::reverse_copy;
kenjiArai 1:9db0e321a9f4 353 using std::rotate;
kenjiArai 1:9db0e321a9f4 354 using std::rotate_copy;
kenjiArai 1:9db0e321a9f4 355 using std::partition;
kenjiArai 1:9db0e321a9f4 356 using std::stable_partition;
kenjiArai 1:9db0e321a9f4 357 using std::sort;
kenjiArai 1:9db0e321a9f4 358 using std::stable_sort;
kenjiArai 1:9db0e321a9f4 359 using std::partial_sort;
kenjiArai 1:9db0e321a9f4 360 using std::partial_sort_copy;
kenjiArai 1:9db0e321a9f4 361 using std::nth_element;
kenjiArai 1:9db0e321a9f4 362 using std::lower_bound;
kenjiArai 1:9db0e321a9f4 363 using std::upper_bound;
kenjiArai 1:9db0e321a9f4 364 using std::equal_range;
kenjiArai 1:9db0e321a9f4 365 using std::binary_search;
kenjiArai 1:9db0e321a9f4 366 using std::merge;
kenjiArai 1:9db0e321a9f4 367 using std::inplace_merge;
kenjiArai 1:9db0e321a9f4 368 using std::includes;
kenjiArai 1:9db0e321a9f4 369 using std::set_union;
kenjiArai 1:9db0e321a9f4 370 using std::set_intersection;
kenjiArai 1:9db0e321a9f4 371 using std::set_difference;
kenjiArai 1:9db0e321a9f4 372 using std::set_symmetric_difference;
kenjiArai 1:9db0e321a9f4 373 using std::push_heap;
kenjiArai 1:9db0e321a9f4 374 using std::pop_heap;
kenjiArai 1:9db0e321a9f4 375 using std::make_heap;
kenjiArai 1:9db0e321a9f4 376 using std::sort_heap;
kenjiArai 1:9db0e321a9f4 377 using std::min_element;
kenjiArai 1:9db0e321a9f4 378 using std::max_element;
kenjiArai 1:9db0e321a9f4 379 using std::lexicographical_compare;
kenjiArai 1:9db0e321a9f4 380 using std::next_permutation;
kenjiArai 1:9db0e321a9f4 381 using std::prev_permutation;
kenjiArai 1:9db0e321a9f4 382
kenjiArai 1:9db0e321a9f4 383 }
kenjiArai 1:9db0e321a9f4 384
kenjiArai 1:9db0e321a9f4 385 #endif // MSTD_ALGORITHM_