22 : _keyExtractor(options.keyExtractor) {}
25 : _keyExtractor(std::move(keyExtractor))
35 const int index = binarySearch(item);
45 items.push_back(item);
51 const auto it = std::find(
items.begin(),
items.end(), item);
52 if (it ==
items.end()) {
56 const int index =
static_cast<int>(std::distance(
items.begin(), it));
72 std::sort(
items.begin(),
items.end(), [&](
const T& a,
const T& b) {
73 return _keyExtractor(a) < _keyExtractor(b);
77 auto it = std::find(
items.begin(),
items.end(), current);
85 int binarySearch(
const T& item)
const
88 int right =
static_cast<int>(
items.size()) - 1;
89 const float key = _keyExtractor(item);
91 while (left <= right) {
92 const int middle = (left + right) / 2;
93 const float current = _keyExtractor(
items[middle]);
104 std::function<float(
const T&)> _keyExtractor;
void remove(const T &item)
SortedLoopArray(std::function< float(const T &)> keyExtractor)
SortedLoopArray(const SortedLoopArrayOptions< T > &options)
void append(const T &item)
void insert(const T &item)
std::function< float(const T &)> keyExtractor