Jak znaleźć pierwszy mniejszy element niż liczbę całkowitą X w wektorze? (c ++)

Jeśli mam następujący wektor {10 10 10 20 20 20 30 30} i chcę, aby funkcja zwracała pozycję liczby całkowitej = X lub bezpośrednio mniejszego elementu po X, na przykład jeśli szukam 11 chcę funkcja zwracająca 2, ponieważ drugi element (10) jest pierwszym mniejszym elementem niż 11 w wektorze.
Próbowałem użyć lower_bound, ale to nie działa.

int myints[] = {10,20,30,30,20,10,10,20};
vector<int> v(myints,myints+8);           // 10 20 30 30 20 10 10 20
vector<int>::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;

ten kod generuje:

lower_bound at position 3
upper_bound at position 3

questionAnswers(3)

yourAnswerToTheQuestion