有没有办法检查是否满足所有条件?例如:
if(num[i] > (*all*)alt[c])
{
}
Run Code Online (Sandbox Code Playgroud)
而不是这样做
if(num[i] > alt[1] && num[i] > alt[2] && num[i] > alt[3])
{
}
Run Code Online (Sandbox Code Playgroud)
就像有一个更短的方式?
您可以使用合适的辅助功能,它可以有效地调用其中一种算法,例如:
if (is_bigger(num[i], alts)) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
函数is_bigger()在std::all_of()合适的条件下使用的位置:
template <typename T, typename Sequence>
bool is_bigger(T const& test, Sequence const& alts) {
return std::all_of(alts.begin(), alts.end(),
[&](T const& other){ return test > other; });
}
Run Code Online (Sandbox Code Playgroud)
all_of()是一种简单的算法,它将谓词应用于由开始和结束迭代器(alts.begin()和alts.end())分隔的序列中的所有元素.此函数中的另一件事是简单的lambda表达式创建相应的谓词.
好吧,你可以取最大值alts,然后与之进行比较num[i].
获取最大元素:
auto max = std::max_element(alt.begin(), alt.end());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |