add algorithm::find_last
This commit is contained in:
parent
0a55b0326e
commit
eb3c273376
|
@ -276,6 +276,20 @@ R find(R range, const T &v) {
|
|||
return range;
|
||||
}
|
||||
|
||||
template<typename R, typename T>
|
||||
R find_last(R range, const T &v) {
|
||||
range = find(range, v);
|
||||
if (!range.empty()) for (;;) {
|
||||
R prev = range;
|
||||
prev.pop_front();
|
||||
R r = find(prev, v);
|
||||
if (r.empty())
|
||||
break;
|
||||
prev = r;
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
template<typename R, typename P>
|
||||
R find_if(R range, P pred) {
|
||||
for (; !range.empty(); range.pop_front())
|
||||
|
|
|
@ -68,10 +68,10 @@ private:
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
inline void write_impl(const T &v, EnableIf<
|
||||
inline bool write_impl(const T &v, EnableIf<
|
||||
!IsConstructible<ConstCharRange, const T &>::value, StNat
|
||||
> = StNat()) {
|
||||
write(ostd::to_string(v));
|
||||
return write(ostd::to_string(v));
|
||||
}
|
||||
|
||||
public:
|
||||
|
@ -113,7 +113,7 @@ public:
|
|||
|
||||
template<typename T>
|
||||
bool write(const T &v) {
|
||||
write_impl(v);
|
||||
return write_impl(v);
|
||||
}
|
||||
|
||||
template<typename T, typename ...A>
|
||||
|
|
Loading…
Reference in a new issue