diff --git a/AK/Vector.h b/AK/Vector.h index c6c880e901..b58775922c 100644 --- a/AK/Vector.h +++ b/AK/Vector.h @@ -336,6 +336,28 @@ public: m_size += other.m_size; } + template + Optional first_matching(Callback callback) + { + for (size_t i = 0; i < size(); ++i) { + if (callback(at(i))) { + return at(i); + } + } + return {}; + } + + template + Optional last_matching(Callback callback) + { + for (ssize_t i = size() - 1; i >= 0; --i) { + if (callback(at(i))) { + return at(i); + } + } + return {}; + } + template bool remove_first_matching(Callback callback) {