我想基于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”
答案 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);