سؤال
هل هناك طريقة بسيطة لتحويل قناع بت في لمؤشر مجموعة؟
وأي. اذا كنت قد حصلت على التعداد
a = 0x01,
b = 0x02,
c = 0x04,
d = 0x08,
e = 0x10,
etc
ووأريد أن تخزين البيانات releated في صفيف، هناك طريقة بسيطة من هذا القبيل أستطيع أن تحويل إلى 0، ب إلى 1، ج إلى 2. وما إلى ذلك؟
وشكرا جزيلا
المحلول
r = ln base 2
and programmatically,
unsigned int v=yourEnumValue;
unsigned r = 0;
while (v >>= 1)
{
r++;
}
r is your answer
نصائح أخرى
ولست متأكدا إذا كان هذا هو ما كنت طالبا، ولكن لماذا لا تأخذ فقط سجل 2-القاعدة؟
ودخول <الفرعية> 2 الفرعي> ن؟
وأنا لا أعرف حلا بسيطا مثل طلبتم، ولكن لماذا لا مجرد استخدام خريطة بدلا مجموعة؟
ويجب أن تعمل دون أي تحويل السحري.
استخدم في الأمراض المنقولة جنسيا :: الخريطة:
#include <map>
std::map <my_enum, my_datatype> m;
m[ a ] = whatever;
لا تنتمي إلى StackOverflow