我遇到了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
对于i = 0和j = 1,它打印'4'作为输出,而它应该是'1'。
有人可以解释一下吗?
答案 0 :(得分:6)
STL算法中的范围是半开放的,即不包括您指定的最后一个元素;因此,如果您指定i=0
和j=1
,则只考虑第一个元素。