Как найти первый меньший элемент, чем целое число X в векторе? (C ++)

Если у меня есть следующий вектор {10 10 10 20 20 20 30 30}, и я хочу, чтобы функция возвращала позицию целого числа = X или непосредственно меньшего элемента после X, как, например, если я ищу 11, я хочу функция, возвращающая 2, так как 2-й элемент (10) является первым меньшим элементом, чем 11 в векторе.

Я пытался использовать lower_bound, но это нет работа.

int myints[] = {10,20,30,30,20,10,10,20};
vector v(myints,myints+8);           // 10 20 30 30 20 10 10 20
vector::iterator low,up;

sort (v.begin(), v.end());                // 10 10 10 20 20 20 30 30

low=lower_bound (v.begin(), v.end(), 11); //
up= upper_bound (v.begin(), v.end(), 11); //

cout < "lower_bound at position " < int(low- v.begin()) < endl;
cout < "upper_bound at position " < int(up - v.begin()) < endl;

return 0;

Ответы на вопрос(3)

Ваш ответ на вопрос