2016-11-17 3 views
-2

Например, у меня есть массив с элементами 1,7,9,23,34,47,67,89,123,234,345,567. Мне нужно знать положение 123.Как использовать lower_bound (upper_bound), чтобы найти позицию любого числа в массиве?

+0

['std :: find'] (http://en.cppreference.com/w/cpp/algorithm/find) Должен работать нормально. Вы можете вычесть 'std :: begin (array)', чтобы получить (числовой) индекс, а не итератор, если это то, что вам нужно. – Xirema

+0

Вы что-то пробовали? пожалуйста, укажите [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) – George

ответ

1

Объявление и инициализация массива элементами. Затем создайте команду vector. Используйте upper_bound() на vector. Вот пример:

#include<iostream> 
#include<algorithm> 
#include<vector> 
using namespace std; 

int main() { 
    int arr[] = {1,7,9,23,34,47,67,89,123,234,345,567}; 
    int len = sizeof(arr)/sizeof(arr[0]); 
    vector<int> v(arr,arr+len); 

    vector<int>::iterator upper; 
    upper = upper_bound(v.begin(), v.end(), 123); 
    cout<<(upper-v.begin())<<endl; // Output: 9 

    return 0; 
} 

Надеюсь, это поможет!

+0

Вы можете использовать 'std :: upper_bound' и' std :: lower_bound' непосредственно в массиве. Нет необходимости в этом векторе. –

Смежные вопросы