说明:inputs是升序排序好的数组,target是要搜索的元素
int lower_bound(vectorupper_bound的实现& inputs, int target) { int l = 0, r = inputs.size() - 1; while (l <= r) { int mid = l + (r - l) / 2; // (l + 2)/2 可能会溢出 if (inputs[mid] < target) { // lower_bound和upper_bound的区别!! l = mid + 1; } else { r = mid - 1; } } return l; }
int upper_bound(vector& inputs, int target) { int l = 0, r = inputs.size() - 1; while (l <= r) { int mid = l + (r - l) / 2; // (l + 2)/2 可能会溢出 if (inputs[mid] <= target) { // lower_bound和upper_bound的区别!! l = mid + 1; } else { r = mid - 1; } } return l; }



