これを書く方法はありますか?
if ((var1==var2) && (var2==var3) && (var3==var4) ...)
このようなものに
if (var1==var2==var3==var4 ...)
?
これを書く方法はありますか?
if ((var1==var2) && (var2==var3) && (var3==var4) ...)
このようなものに
if (var1==var2==var3==var4 ...)
?
C++11 では、次のような一連の関数を記述できます。
template<typename T>
bool all_equal(T const &)
{
return true;
}
template<typename T, typename U, typename... Args>
bool all_equal(T const & a, U const & b, Args const&... c)
{
return a==b && all_equal(b,c...);
}
int main()
{
std::cout << all_equal(1,2,3) << '\n';
std::cout << all_equal(1,1,1) << '\n';
}
編集:スティーブ・ジェソップは、ここでリンクされた複製について同じ考えを持っていたと思います
それよりも明確な方法ではありません。set
たとえば、値を挿入して if を確認size == 1
できますが、今持っているものは行く方法です。
基本的に、いいえ。
散発的な変数だけでなく、コレクションがある場合は、アルゴリズムを適用して、それらがすべて等しいかどうかを確認できます。つまり、O(N)
すべてが実際に等しいかどうか(長いステートメントのように)、次の変数が見つかるとすぐに壊れます。ではありません。