2

重複の可能性:
複数の変数が同じ値に等しいかどうかを確認するにはどうすればよいですか?

これを書く方法はありますか?

    if ((var1==var2) && (var2==var3) && (var3==var4) ...)

このようなものに

    if (var1==var2==var3==var4 ...)

4

3 に答える 3

5

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';
}

編集:スティーブ・ジェソップは、ここでリンクされた複製について同じ考えを持っていたと思います

于 2013-01-03T17:21:43.963 に答える
1

それよりも明確な方法ではありません。setたとえば、値を挿入して if を確認size == 1できますが、今持っているものは行く方法です。

于 2013-01-03T17:14:40.537 に答える
0

基本的に、いいえ。

散発的な変数だけでなく、コレクションがある場合は、アルゴリズムを適用して、それらがすべて等しいかどうかを確認できます。つまり、O(N)すべてが実際に等しいかどうか(長いステートメントのように)、次の変数が見つかるとすぐに壊れます。ではありません。

于 2013-01-03T17:17:46.023 に答える