問題是這樣的:我需要創建一個位圖(一系列二進制標誌)來保存有關一堆對象的真/假信息;對象的數量並不是先驗已知的,所以我必須在運行時分配足夠的標誌,可能在位圖創建期間。C++位圖保存二進制標誌
鑑於max_num_elements
元素,我的第一個想法是分配的((num_elements/8)+1)*sizeof(char)
位的數組:因爲char
是8位長,它可以處理8個二進制標誌,所以我得到的char
S中minimun號舉行num_elements
標誌,具有最大內存浪費7bits。
真正的問題是檢查/設置標誌:我因子評分做全陣列,然後按位和一些bitshifting獲得標誌N像
flag_n = (flag_array>>n)&0d1
,但如果我理解正確的話,這個變速操作不會影響整個數組,只是第一個元素。
我該如何做到這一點?
除非我失去了一些東西,爲什麼不是一個長而不是位圖。第一位對於某些屬性保持真/假,對於另一屬性保持第二位等等。 – Eugene