Чи є спосіб знайти максимальні та мінімально визначені значення переліку в c ++?
Чи є спосіб знайти максимальні та мінімально визначені значення переліку в c ++?
Відповіді:
Ні, немає можливості знайти максимальні та мінімально визначені значення будь-якого переліку в C ++. Коли потрібна така інформація, часто є гарною практикою визначати останнє та перше значення. Наприклад,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
Для кожного значення між First
і не потрібно називати значення Last
.
Ні, не в стандартній C ++. Ви можете зробити це вручну:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values
буде містити кількість значень у переліку.
num_values
міститиме кількість значень у переліченні, крім num_values
себе.
Ні. Перелік у C або C ++ - це просто перелік констант. Не існує вищої структури, яка містила б таку інформацію.
Зазвичай, коли мені потрібна така інформація, я включаю до переліку значення max і min приблизно так:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
Деякі приклади того, як це може бути корисним, див. Цю веб-сторінку: Stupid Enum Tricks
Не автоматично, але ви можете додавати штучні значення перерахування для позначення мінімальних та максимальних значень, наприклад
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
}