无法正确使用min_element()函数

4

我在 C++ 的 algorithm 头文件中使用 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'。 能否有人解释一下这是为什么?
1个回答

6

STL算法中的范围是半开放的,即您指定的最后一个元素不包括在内;因此,如果您指定i = 0j = 1,则仅考虑第一个元素。


@user3291897:很高兴能帮到你!您可以接受我的答案(谢谢!:)) - Matteo Italia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接