- xbt_assert(low < high, "Wrong parameters: low (%d) should be smaller than high (%d)", low, high);
-
- do {
- int mid = low + (high - low) / 2;
- XBT_DEBUG("a %f low %d high %d mid %d value %f", a, low, high, mid, array[mid]);
-
- if (array[mid] > a)
- high = mid;
- else
- low = mid;
- }
- while (low < high - 1);
-
- return low;
-}
-
-}
+ if (array[0] > a)
+ return 0;
+ auto pos = std::upper_bound(begin(array), end(array), a);
+ return std::distance(begin(array), pos) - 1;