为什么输出要变成50,它本来应该是20。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int v[] = {10, 20, 30, 50, 20, 70, 30};
int* i1;
i1 = std::min_element(v + 3, v + 4);
cout << *i1 << "\n";
return 0;
}
答案 0 :(得分:14)
STL算法在半开范围上运行,该范围通常表示为[first, last)
。这意味着在该范围内包括了first
元素,中没有包括了last
元素。因此
[v + 3, v + 4)
指定长度为1的范围,并且该范围中的唯一元素的值为50
。*std::min_element(v + 3, v + 4)
的结果只能是50
。