سؤال
هل هناك طريقة للعثور على الحد الأقصى والحد الأدنى تعريف القيم من التعداد في ج ++؟
المحلول
لا، لا توجد وسيلة للعثور على الحد الأقصى والحد الأدنى تعريف القيم في أي تعداد في 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 ++ هو مجرد قائمة من الثوابت. ليس هناك هيكل أعلى من شأنه أن يعقد مثل هذه المعلومات.
وعادة عندما كنت بحاجة إلى هذا النوع من المعلومات I تدرج في تعداد كحد أقصى والقيمة الأدنى لشيء من هذا القبيل:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
وانظر هذه الصفحة على شبكة الإنترنت لبعض الأمثلة عن كيفية هذا يمكن أن تكون مفيدة: غبي الخدع التعداد أ >
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};
وإذا كان لديك بيان التبديل وللتحقق مما إذا تم التوصل إلى القيمة الأخيرة يفعل ما يلي:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}