我如何将std :: max_element用于结构

时间:2019-07-14 04:05:18

标签: c++

我想基于std::max_element元素将VAR_T用于结构id, 但是我无法将起点和终点与该函数的输入关联。

typedef struct _VAR_ {
  int id;
  char b[16];

  _VAR_() {
    int a = 0;
    strcpy (b, "------");
  }
} VAR_T;

VAR_T newVar[5];
int counter;
int max

max = *std::max_element (newVar.id, newVar.id + counter);

此错误在最后一行中发出:

  

错误:请求成员“ id”

1 个答案:

答案 0 :(得分:3)

您需要一个自定义比较器来基于id成员进行比较。然后,您需要检索id成员:

auto it = std::max_element(newVar, newVar + counter,
                           [](const VAR_T& lhs, const VAR_T& rhs)
                           { return lhs.id < rhs.id; })
int max = it->id;

从C ++ 20开始,您还可以使用投影:

ranges::max_element(newVar, ranges::less, &VAR_T::id);