【发布时间】:2021-02-16 11:18:41
【问题描述】:
我必须计算人们的平均年龄,然后我必须计算有多少人比平均年龄年轻。在那之后,我必须让他们变老,然后再次计算有多少人比平均水平年轻。
int magic(Vector<Person>& v, Guild g) {
if (v.size() == 0) {
throw runtime_error("");
}
int d = accumulate(v.begin(), v.end(), 0,
[](int sum, Person p) { return sum += p.get_age(); });
int a = d / v.size();
auto count =
count_if(v.begin(), v.end(), [a](Person p1) { return p1.get_age() < a; });
for_each(v.begin(), v.end(), [g](Person p) {
if (p.get_guild() == g) {
return p.aging();
}
});
auto count2 =
count_if(v.begin(), v.end(), [a](Person p3) { return p3.get_age() < a; });
return count + count2;
}
【问题讨论】:
-
Person pn 你的for_eachlambda 是按值计算的。如果您要更改该对象,则需要引用Person &p。除此之外,考虑使用for (auto& p : v)并保护破旧的for_each构造。