Blender V4.3
BLI_binary_search.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2023 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
11#include <algorithm>
12
13#include "BLI_utildefines.h"
14
16
22template<typename Iterator, typename Predicate>
23int64_t find_predicate_begin(Iterator begin, Iterator end, Predicate &&predicate)
24{
25 return std::lower_bound(begin,
26 end,
27 nullptr,
28 [&](const auto &value, void * /*dummy*/) { return !predicate(value); }) -
29 begin;
30}
31
32template<typename Range, typename Predicate>
33int64_t find_predicate_begin(const Range &range, Predicate &&predicate)
34{
35 return find_predicate_begin(range.begin(), range.end(), predicate);
36}
37
38} // namespace blender::binary_search
int64_t find_predicate_begin(Iterator begin, Iterator end, Predicate &&predicate)
__int64 int64_t
Definition stdint.h:89