, o @bitmask cevabını uzatır:
Eğer kontrol edebilir kriterlerin sabit vardır varsayalım.
enum fruit_and_vegetables {
apples = 0,
pears,
tomatoes,
cucumbers
}
enum qualifs {
is_fruit = 1,
is_sweet = 1<<1,
is_round = 1<<2,
is_tasty = 1<<3
}
const qualifs qualifs_LUT[] = { // can be generated
is_fruit | is_sweet | is_round, // apple
...
};
böylece belirli bir eleme irade kontrol
if (qualifs_LUT[tomato] & is_tasty)
haline geldiğini: Öyleyse
fruit_and_vegetables
enum değerleri için bit maskesi kullanmak yerine, ek LUT kullanabilirsiniz (o kelimenin boyutuna sınırlayacaktır)
EDIT: ve başka bir ilginç yöntem. @bitmask: yöntemini tekrar düşünün. 2'nin güçlerine dayanıyor. Ama ne kadar primes? numaralandırma değerlerine asal sayılar atayarak, daha fazla değer squize böylece Onlar o ürünü varsayarak, daha yavaş çok büyür olmaz taşma:
enum fruit_and_vegetables {
apples = 2,
pears = 3,
tomatoes = 5,
cucumbers = 7
}
if ((apples * pears * tomatoes) % tomatoes == 0)
printf("it's tasty!");
bu bir denetim kümesinde öğe sayısını sınırlamaktadır.
Sen istediğin sözdizimi ulaşmak için yardımcı olacaktır yardımcı şablonu yazabilir
Domates ve salatalık * olan * –
Scotus'a göre değil ;-p meyve: http://en.wikipedia.org/wiki/Tomato#Fruit_or_vegetable.3F –
@Noah: 'domates' * ve domates değil * – ruslik