C++ 如何找到结构数组的最大值和最小值

C++ 如何找到结构数组的最大值和最小值,c++,C++,我有一个float类型的结构数组: students[num].height 其中包含程序中的20个值。 如何编写函数来查找此结构数组的最大值和最小值?将浮点变量max设置为数组第一个元素的高度成员,将浮点变量min也设置为第一个元素的高度成员。在所有结构上循环。循环时,如果高度大于“最大值”,请将“最大值”设置为该值。如果高度小于最小值,则将最小值设置为该高度。将浮点变量max设置为数组第一个元素的高度成员,将浮点变量min也设置为第一个元素的高度成员。在所有结构上循环。循环时,如果高度大

我有一个float类型的结构数组:

students[num].height 
其中包含程序中的20个值。
如何编写函数来查找此结构数组的最大值和最小值?

将浮点变量max设置为数组第一个元素的高度成员,将浮点变量min也设置为第一个元素的高度成员。在所有结构上循环。循环时,如果高度大于“最大值”,请将“最大值”设置为该值。如果高度小于最小值,则将最小值设置为该高度。

将浮点变量max设置为数组第一个元素的高度成员,将浮点变量min也设置为第一个元素的高度成员。在所有结构上循环。循环时,如果高度大于“最大值”,请将“最大值”设置为该值。如果高度小于最小值,则将最小值设置为该高度。

  • 将元素推回到std::vector
  • 使用及
      • 将元素推回到std::vector
      • 使用及
      //学生tStudentsArray[20]=。。。
      标准::最大元素(学生人数、学生人数+学生人数、,
      [](const student&pLeft、const student&pRight){
      返回左高<右高;
      });
      
      任何C++类都不包括C++标准库,这是有问题的。

      <代码> /学生TSubStudio数组[20 ] =… 标准::最大元素(学生人数、学生人数+学生人数、, [](const student&pLeft、const student&pRight){ 返回左高<右高; });
      任何C++类都不包括C++标准库,这是有问题的。

      是否通过函数填充结构,或者是已经填充了?< /p> 如果它是通过函数填充的,则可以保留两个变量max(最初设置为MIN_INT)和MIN(最初设置为max_INT)

      对于每次插入,请检查值是否大于最大值或小于最小值,如果是,请将其正确设置为


      如果不是通过你的函数来填充,我会同意jonsca的答案。

      是通过你的函数来填充结构,还是已经填充了

      如果它是通过函数填充的,则可以保留两个变量max(最初设置为MIN_INT)和MIN(最初设置为max_INT)

      对于每次插入,请检查值是否大于最大值或小于最小值,如果是,请将其正确设置为



      如果它不是通过你的函数填充的,我会使用jonsca的答案。

      假设这是一门课程,OP可能没有涵盖标准库(或者可能不允许使用它)。@jonsca-OP应该提到它。或者不要将它们推到std::vector中。STL算法在C数组上运行得很好。@da代码-你是对的。但是在这种情况下(元素在结构的每个对象中)重载<或者提供一个比较器如果这是一门课程,OP可能没有涵盖标准库(或者可能不允许使用它)。@jonsca-OP应该提到它。或者不要将它们推到std::vector中。STL算法在C数组上运行得很好。@da代码-你是对的。但是在这种情况下(元素在一个结构的每个对象中)它将如何工作过载<或提供一个比较级。我不是说cout/cin/等等,但大多数教授(以我的经验,无论如何)都希望学生长时间完成作业。我见过一些完全避开std::string的。我不是说它是对的,我是说它已经存在了。+1对于使用C指针作为max_元素的迭代器和lambda comparator函数来说,任何使用语言特性的答案都是“有点可疑的”,IMHO。你至少应该声明你在使用一个不在标准C++中的特性。lambda函数是完全有效的标准C++,只是没有广泛支持。但这是编译器的问题。不,我也不再教书了。我今天看到的是计算机科学毕业生声称他们是“C++专家”,他们在面对一段boost(或boostified)代码后几乎晕倒……我不是说cout/cin/等等,但大多数教授(以我的经验,无论如何)希望学生长期完成作业。我见过一些完全避开std::string的。我不是说它是对的,我是说它已经存在了。+1对于使用C指针作为max_元素的迭代器和lambda comparator函数来说,任何使用语言特性的答案都是“有点可疑的”,IMHO。你至少应该声明你在使用一个不在标准C++中的特性。lambda函数是完全有效的标准C++,只是没有广泛支持。但这是编译器的问题。不,我也不再教书了。我今天看到的是计算机科学毕业生声称他们是“C++专家”,他们在面对一段boost(或boostified)代码时几乎晕倒……对不起,我真的不明白。所以,float max=students[num]。height float min=students[num]。height?如何在所有结构上循环?我以前从未绕过一个结构。请帮助。循环结构数组。另外,我如何编写参数?使用
      for
      循环并比较
      学生[i]。在每次迭代过程中,将高度
      设置为最大值,然后设置为最小值。对不起,我不太明白。所以,float max=students[num]。height float min=students[num]。height?如何在所有结构上循环?我以前从未绕过一个结构。请帮助。循环结构数组。此外,我如何编写参数?使用
      for
      循环,并在每次迭代期间将
      学生[i].身高
      与最大值和最小值进行比较。
         // student tStudentsArray[20] = ... 
         std::max_element(tStudentsArray, tStudentsArray + tNumberOfStudents,
              [] (const student& pLeft, const student& pRight) {
                  return pLeft.height < pRight.height;
              });