資料結構 位集合 bitset

2021-10-25 05:56:48 字數 1112 閱讀 2165

位集合(bitset)用來方便地管理一系列的bit位,其只能儲存值為0或1,true或false的值。該類模擬乙個bool元素陣列,但針對空間分配進行了優化,通常每個元素只占用乙個位。

在位集合中,每個位位置都可以單獨訪問,例如,對於乙個名為foo的給定位集合,表示式foo[3]訪問其第四位,就像正則陣列訪問其元素一樣。但是,因為在大多數c++環境中,沒有元素型別是單個位,所以各個訪問元素為特殊引用型別。

位集合可以從整數值和二進位制字串構造,並轉換為整數值和二進位制字串;也可以以二進位制格式直接從流中提取。

其與vector一樣,儲存空間都經過編譯優化。

其除了可以訪問指定下標的bit位以外,還可以把它們作為乙個整數來進行某些統計。

其模板類定義為:

template class bitset;

其成員函式包括:

(1)(constructor),bitset構造器;

(2)可執行的各種位操作:&=,|=,=,<<=,>>=,~,<<,>>,==,!=,&,|,,>>,<<;

(3)operator,返回容器在指定索引處的元素引用,不進行索引範圍有效性檢查;

(4)count(),返回容器中所有值=1的元素的個數;

(5)size(),返回容器中元素的個數,即初始化模板時指定的n值;

(6)test(),判斷容器中指定位置的元素值是否為1;

(7)any(),判斷整個容器中是否至少有乙個元素的值為1;

(8)none(),判斷整個容器中是否所有元素的值都=0;

(9)all(),判斷整個容器中是否所有元素的值都=1;

(10)set(),設定容器中的所有元素或指定位置的元素的值=1;

(11)reset(),設定容器中的所有元素或指定位置的元素的值=0;

(12)flip(),設定容器中的所有元素或指定位置的元素的值為其取反值;

(13)to_string(),將當前容器中的所有元素轉換為由0或1組成的字串;

(14)to_ulong(),將當前容器中的所有元素認為是二進位制數表示,將其轉換為對應的無符號十進位制數;

(15)to_ullong(),其功能與to_ulong()完全相同,主要用於bitset中元素個數較多,使用unsigned long無法完全轉換的情況。

STL之bitset位集合

首先是需要標頭檔案的 include bitset是c 語言的乙個類庫,用來方便地管理一系列的bit位。有些程式要處理二進位制位的有序集,每個位可能包含的是0 假 或1 真 的值。位是用來儲存一組項或條件的yes no資訊 有時也稱標誌 的簡潔方法。函式作用 b.any b中是否存在值為1的二進位制...

Java 資料結構 Bitset類

乙個bitset類建立一種特殊型別的陣列來儲存位值。bitset中陣列大小會隨需要增加。這和位向量 vector of bits 比較類似。這是乙個傳統的類.public static void main string args system.out.println initial pattern ...

java資料結構之Bitset

這是一種位集合,操作一組布林值的時候可以通過 或or,與and,異或xor 等方法快速改變其組內某一部分值 bitset bits1 new bitset 10 bitset bits2 new bitset 10 for int i 1 i 21 i if i 3 0 else continue ...