• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件の配列)

条件の配列を使った条件分岐の簡便な方法

このQ&Aのポイント
  • 条件の配列を使って、簡潔なコードで条件分岐を行う方法を探しています。
  • for文や関数ポインタを使うことで、変数や条件が増えても簡単に処理できる可能性があります。
  • アドバイスをいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.2

関数ポインタの配列で実現することは可能です. static void zero(void) { std::cout <<"value="<<0 <<std::endl; } static void one(void) { std::cout <<"value="<<1 <<std::endl; } static void two(void) { std::cout <<"value="<<2 <<std::endl; } static void three(void) { std::cout <<"value="<<3 <<std::endl; } typedef void (*numbers)(void); numbers print_number[] = { zero, one, two, three }; int main(){  int value=3;  print_number[value](); } これが元のコードより簡便かどうかは,人によって意見が分かれるところですが.

runjump
質問者

お礼

ありがとうございます。 100個くらいのかなり煩雑な条件分岐をする必要があったので、質問させていただきました。 関数ポインタをtypdefすればいいのですね。 とても参考になります。

その他の回答 (1)

回答No.1

こんなん↓でよろしいか? #include <array> #include <functional> #include <iterator> #include <iostream> using namespace std; int main() { // "intを与えてboolを返す関数"を配列化するココロミ array<function<bool(int)>,4> conditions = { [](int value)-> bool { return value == 0; }, [](int value)-> bool { return value == 1; }, [](int value)-> bool { return value == 2; }, [](int value)-> bool { return value == 3; }, }; int value = 2; for ( int i = 0; i < conditions.size(); ++i ) { cout << boolalpha << conditions[i](value) << endl; } }

runjump
質問者

お礼

ファクトリーパターン(を使っているのですよね??)は名前だけ知っていましたが、使い方がわかりました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう