我有要求使用位圖。基本上,需要對一組幾百整數的處理位數的wchar_t
或int16_t
或char16_t
陣列。我應該使用wchar_t或int16_t或char16_t作爲位圖。
什麼應該是首選?使用其中一個有什麼優勢?
我有要求使用位圖。基本上,需要對一組幾百整數的處理位數的wchar_t
或int16_t
或char16_t
陣列。我應該使用wchar_t或int16_t或char16_t作爲位圖。
什麼應該是首選?使用其中一個有什麼優勢?
如果你想有一個位圖,或許可以考慮使用std::bitset。
從鏈接引用:
類模板位集表示N比特的固定大小的序列。比特集可以由標準邏輯運算符操作並轉換爲字符串和整數。
其優點是很容易將位數擴展到任意數量。構造函數可以使用整型來初始化位集。
考慮從這個documentation article的例子:
輸入
#include <iostream>
#include <bitset>
int main()
{
std::bitset<8> b1(42);
for (std::size_t i = 0; i < b1.size(); ++i) {
std::cout << "b1[" << i << "]: " << b1[i] << '\n';
}
b1[0] = true; // modifies the first bit through bitset::refence
std::cout << "After setting bit 0, the bitset holds " << b1 << '\n';
}
輸出
b1[0]: 0
b1[1]: 1
b1[2]: 0
b1[3]: 1
b1[4]: 0
b1[5]: 1
b1[6]: 0
b1[7]: 0
After setting bit 0, the bitset holds 00101011
多少標誌你需要什麼?如果你需要8使用一個字符,如果你需要16使用一個短。只根據需要使用盡可能多的空間,但要確保不要過度優化和繪製自己(或投影到)角落。
如果你不知道它是如何工作的每個標誌是二的冪佔據一個特定位在整數無非是友好的名字等等。
1是第一比特 2是第二位 4是第三位 圖8是第四個比特 等...
例如,如果你有兩個標誌 READ_ACCESS = 2(0010 ) WRITE_ACCESS = 8(1000)
您將您的標誌設置爲讀/寫,那麼您的整數值將爲10(1010)。
因此,一個字符有8位,這將讓你有8個標誌。 一個選擇比另一個選擇的唯一好處是大小。如果你有一個嵌入式設備,明智地選擇,如果你有一個典型的桌面自由選擇像一個很長的時間,並留下一些空間擺動。
+1用於推薦內置類型並且不會被C99固定大小的typedefs帶走。 –
希望是在我正要採取的方法有效。順便說一句,如果我不想使用'bitset',那麼應該比三者更優先? – Saksham
您應該使用具有您需要的位數的類型。幾百個整數對我來說聽起來不是很多,所以它應該是非常快速的工作方式。 –
哦,好的。我需要10位,每位數字一位。謝謝! – Saksham