Có cách nào để tìm giá trị xác định lớn nhất và nhỏ nhất của một enum trong c ++ không?
Có cách nào để tìm giá trị xác định lớn nhất và nhỏ nhất của một enum trong c ++ không?
Câu trả lời:
Không, không có cách nào để tìm các giá trị xác định lớn nhất và nhỏ nhất của bất kỳ enum nào trong C ++. Khi cần loại thông tin này, thông thường tốt là bạn nên xác định giá trị Cuối cùng và Giá trị Đầu tiên. Ví dụ,
enum MyPretendEnum
{
Apples,
Oranges,
Pears,
Bananas,
First = Apples,
Last = Bananas
};
Không cần phải đặt tên các giá trị cho mọi giá trị giữa First
và Last
.
Không, không có trong C ++ tiêu chuẩn. Bạn có thể làm điều đó theo cách thủ công:
enum Name
{
val0,
val1,
val2,
num_values
};
num_values
sẽ chứa số lượng giá trị trong enum.
num_values
sẽ chứa số lượng giá trị trong enum, ngoại trừ num_values
chính nó.
Không. Một enum trong C hoặc C ++ chỉ đơn giản là một danh sách các hằng số. Không có cấu trúc nào cao hơn có thể chứa thông tin như vậy.
Thông thường khi tôi cần loại thông tin này, tôi đưa vào enum một giá trị tối đa và tối thiểu như sau:
enum {
eAaa = 1,
eBbb,
eCccc,
eMin = eAaaa,
eMax = eCccc
}
Xem trang web này cho một số ví dụ về cách này có thể hữu ích: Ngu ngốc Enum Tricks
Không tự động, nhưng bạn có thể thêm các giá trị enum nhân tạo để biểu thị các giá trị tối thiểu và tối đa, ví dụ:
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++) {
....
}
bạn thậm chí không cần chúng, những gì tôi làm chỉ là tôi nói ví dụ nếu bạn có:
enum Name{val0,val1,val2};
nếu bạn có câu lệnh switch và để kiểm tra xem giá trị cuối cùng đã đạt được chưa, hãy làm như sau:
if(selectedOption>=val0 && selectedOption<=val2){
//code
}