2014-02-10 3 views
4

У меня проблема с min_element() в заголовке алгоритма на C++.Невозможно использовать min_element() правильно

Код выглядит следующим образом:

int a[5] = {4, 1, 2, 3, 4}; 

for (int j = n - 1; j >= 0; j--) { 
    for (int i = 0; i <= j; i++) { 
     int *lowest = min_element(a+i, a+j); //get min element in range 
     cout << "A[" << i << "] to A[" << j << "]" 
      << "lowest =" << *lowest << endl; 
    } 
} 

это дает выход, как показано ниже

A[0] to A[4]lowest =1 
A[1] to A[4]lowest =1 
A[2] to A[4]lowest =2 
A[3] to A[4]lowest =3 
A[4] to A[4]lowest =4 
A[0] to A[3]lowest =1 
A[0] to A[2]lowest =1 
"A[0] to A[1]lowest =4" 
A[0] to A[0]lowest =4 

при г = 0 и у = 1, то печатает '4', как выход, тогда как оно должно быть «1 ».

Может кто-нибудь объяснить это пожалуйста?

ответ

6

Диапазоны в алгоритмах STL являются полуоткрытыми, то есть последний указанный вами элемент не включен; по этой причине, если вы укажете i=0 и j=1, вы рассматриваете только первый элемент.

+0

thank u sir сейчас проблема разрешена – RDK

+0

@ user3291897: рад, что это помогло! Вы можете [принять] (http://stackoverflow.com/help/accepted-answer) мой ответ (спасибо! :)) –

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