1#ifndef INTERPOLATION_SEARCH_H
2#define INTERPOLATION_SEARCH_H
29template <
typename Iterator,
typename T>
30int64_t interpolation_search(Iterator begin, Iterator end, T key) {
31 auto size = std::distance(begin, end);
33 auto it_begin = begin;
34 auto it_end = end - 1;
36 while (size > 0 && *it_begin <= key && *it_end >= key) {
37 auto guess = it_begin;
38 if (*it_end != *it_begin) {
39 auto offset =
static_cast<int>(
static_cast<double>(size - 1) * (
key - *it_begin) /
40 (*it_end - *it_begin));
41 std::advance(guess, offset);
44 return std::distance(begin, guess);
52 size = std::distance(it_begin, it_end) + 1;
55 return static_cast<int64_t
>(-1);
@ key
the parser read a key of a value in an object
Definition json.hpp:11716