Из чтения из Inte rnet я понимаю, что метод lower_bound()
в C ++ используется для возврата итератора, указывающего на первый элемент в диапазоне [first, last), который имеет значение не меньше значения. Это означает, что функция возвращает индекс следующего наименьшего числа, которое больше этого числа.
Итак, для приведенного ниже кода я понял, что вывод равен 3. Но, поскольку есть повторение 6. Как Могу ли я получить индекс последних 6, используя lower_bound()
. Я могу реализовать свой собственный binary_search()
для этого, но я хочу знать, как это сделать, lower_bound()
.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main ()
{
int array[] = {5,6,7,7,6,5,5,6};
vector<int> v(array,array+8); // 5 6 7 7 6 5 5 6
sort (v.begin(), v.end()); // 5 5 5 6 6 6 7 7
vector<int>::iterator lower,upper;
lower = lower_bound (v.begin(), v.end(), 6);
upper = upper_bound (v.begin(), v.end(), 6);
cout << "lower_bound for 6 at position " << (lower- v.begin()) << '\n';
return 0;
}