/* * Copyright (c) 2021, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace AK { template constexpr TIterator find_if(TIterator first, TIterator last, TUnaryPredicate&& pred) { for (; first != last; ++first) { if (pred(*first)) { return first; } } return last; } template constexpr TIterator find(TIterator first, TIterator last, const T& value) { return find_if(first, last, [&](const auto& v) { return Traits::equals(value, v); }); } template constexpr size_t find_index(TIterator first, TIterator last, const T& value) { return find_if(first, last, [&](const auto& v) { return Traits::equals(value, v); }).index(); } }