在C ++中使用STL在数组中查找最小元素

时间:2019-10-09 08:27:17

标签: c++ stl

为什么输出要变成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;
}

1 个答案:

答案 0 :(得分:14)

STL算法在半开范围上运行,该范围通常表示为[first, last)。这意味着在该范围内包括了first元素,中没有包括了last元素。因此

[v + 3, v + 4)

指定长度为1的范围,并且该范围中的唯一元素的值为50*std::min_element(v + 3, v + 4)的结果只能是50