【发布时间】:2020-02-11 19:38:21
【问题描述】:
我有一个结构,它有一个名为id 的成员。
struct st
{
int id;
double d;
};
st s1 = {1, 5.6};
st s2 = {2, 5.7};
st s3 = {3, 4.3};
vector<st> vec;
vec.push_back(s1);
vec.push_back(s2);
vec.push_back(s3);
int max = 0;
for(int i=0; i < vec.size(); i++)
{
if(vec[i].id > max)
max = vec[i].id;
}
如何在不使用 for 循环的情况下找到这些结构的向量中的最大 id?我看到this answer 但不明白。
有没有更有效的方法使用*max_element?
【问题讨论】:
-
@Hadi GhahremanNezhad 您找不到没有循环的最大元素。标准算法 std::max_element 实际上是一个循环。:) L 否则对于小向量,您可以使用 if-else 语句。
-
除非你的向量元素满足某些条件,否则最有效的方法是使用循环。如果你真的需要更好的方法,那么你可以对元素进行排序,然后选择最后一个。
-
@walnut 是的,this answer 有帮助,但下面 idclev 的更完整。
-
@walnut 哦没意识到,