diff --git a/ostd/algorithm.hh b/ostd/algorithm.hh index 3ea5d86..ff73e20 100644 --- a/ostd/algorithm.hh +++ b/ostd/algorithm.hh @@ -292,6 +292,24 @@ R find_if_not(R range, P pred) { return range; } +template +R1 find_one_of(R1 range, R2 values, C compare) { + for (; !range.empty(); range.pop_front()) + for (R2 rv = values; !rv.empty(); rv.pop_front()) + if (compare(range.front(), rv.front())) + return range; + return range; +} + +template +R1 find_one_of(R1 range, R2 values) { + for (; !range.empty(); range.pop_front()) + for (R2 rv = values; !rv.empty(); rv.pop_front()) + if (range.front() == rv.front()) + return range; + return range; +} + template RangeSize count(R range, const T &v) { RangeSize ret = 0;