質問

c ++で列挙型の定義済みの最大値と最小値を見つける方法はありますか?

役に立ちましたか?

解決

いいえ、C ++の列挙型の定義済みの最大値と最小値を見つける方法はありません。この種の情報が必要な場合、多くの場合、最後と最初の値を定義することをお勧めします。たとえば、

enum MyPretendEnum
{
   Apples,
   Oranges,
   Pears,
   Bananas,
   First = Apples,
   Last = Bananas
};

First から Last までのすべての値に名前を付ける必要はありません。

他のヒント

いいえ、標準C ++ではありません。手動で行うことができます:

enum Name
{
   val0,
   val1,
   val2,
   num_values
};

num_values には列挙型の値の数が含まれます。

いいえ。 CまたはC ++の列挙は、単なる定数のリストです。そのような情報を保持する上位構造はありません。

通常、この種の情報が必要な場合は、enumに次のような最大値と最小値を含めます。

enum {
  eAaa = 1,
  eBbb,
  eCccc,
  eMin = eAaaa,
  eMax = eCccc
}

これがどのように役立つかの例については、このWebページを参照してください。愚かな列挙のトリック

  enum My_enum
    {
       FIRST_VALUE = 0,

       MY_VALUE1,
       MY_VALUE2,
       ...
       MY_VALUEN,

       LAST_VALUE
    };

定義後、My_enum :: LAST_VALUE == N + 1

自動ではありませんが、最小値と最大値を示すために人為的な列挙値を追加できます。例:

typedef enum {start_of_colors=-1, eRed, eWhite, eBlue, eGray,
end_of_colors} eListOfTags;

for (eListOfTags i = start_of_colors+1; i < end_of_colors; i++) {
.... 
}

あなたはそれらを必要とさえしません、私がすることは、例えばあなたが持っているならば私が言うだけです:

enum Name{val0,val1,val2};

switchステートメントがあり、最後の値に到達したかどうかを確認するには、次のようにします。

if(selectedOption>=val0 && selectedOption<=val2){

   //code
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top