add algorithm::find_one_of (finds the first occurence of any value in the second range in the first range, then returns the range)

master
Daniel Kolesa 2015-08-11 01:32:24 +01:00
parent 0fae09907e
commit 1a6d95580f
1 changed files with 18 additions and 0 deletions

View File

@ -292,6 +292,24 @@ R find_if_not(R range, P pred) {
return range;
}
template<typename R1, typename R2, typename C>
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<typename R1, typename R2>
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<typename R, typename T>
RangeSize<R> count(R range, const T &v) {
RangeSize<R> ret = 0;