c ++如果满足所有条件

Gho*_*tff 2 c++ if-statement

有没有办法检查是否满足所有条件?例如:

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)

就像有一个更短的方式?

Die*_*ühl 9

您可以使用合适的辅助功能,它可以有效地调用其中一种算法,例如:

 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表达式创建相应的谓词.


zmb*_*mbq 7

好吧,你可以取最大值alts,然后与之进行比较num[i].

获取最大元素:

auto max = std::max_element(alt.begin(), alt.end());
Run Code Online (Sandbox Code Playgroud)