因為無知而學習,因為學習而更感無知。在刷題過程中遇到不少的位操作,這裡有必要學習一下c++ 內建的bitset類。歡迎各位指出文中的錯誤。
本文主要內容:
1. bitset類的函式使用
2. 自己實現的mybitset類
–**主要參考《c++ primer》
#include
//包含標頭檔案,是標準庫的標頭檔案
#include
#include
using
namespace std;
/*在c++中,int 和long值範圍一樣,4bytes
unsigned int 和unsigned long 取值範圍一樣,4bytes
long long 佔8個位元組,有符號整型。
unsigned long long佔8位元組,無符號整型。
*///建構函式。bitset是乙個類,類似於vector和array
void
constructiontset()
void
operatortest()
void
test03()
intmain()
根據c++提供的標準類bitset函式的功能,使用vector輔助實現乙個類,該類包含bitset的大多數功能。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
template
class
mybitset final
;mybitset
(unsigned
long
long n)
reverse
(vec.
begin()
, vec.
end())
;//翻轉
}else
if(v.
size()
<=cap)
*/reverse
(v.begin()
, v.
end())
;for
(int i =
0; i < v.
size()
; i++)}
}mybitset
(string s,size_t pos=
0,size_t end=-1
) end = end + pos;
exception e1
("invaild_argument!");
exception e2
("傳入的引數有誤!");
tryfor
(int i = pos; i catch
(exception e)
if(end - pos <= cap)
for(
int i = cap -
(end - pos)
, j = pos; i < cap; i++
)else
if(s[j]
=='0'
) j++;}
}else
if(end - pos > cap)
else
if(s[j]
=='0'
) j++;}
}}template
friend ostream&
operator
<<
(ostream& out, mybitset
& b)
;bool
operator
(size_t pos)
const
bool
any(
)const
return
false;}
bool
all(
)const
}return
true;}
bool
none()
const
return
true;}
size_t count()
const
return res;
}constexpr size_t size()
const
bool
test
(size_t pos)
const
else
}catch
(exception e)
} mybitset&
set(size_t pos,
bool val)
else
}catch
(exception e)
return
*this;}
mybitset&
set(
)noexcept
return
*this;}
mybitset&
reset()
noexcept
return
*this;}
mybitset&
flip()
return
*this;}
mybitset&
flip
(size_t pos)
string to_string()
noexcept
}return str;
}unsigned
long
to_ulong()
}try
else
}return res;};
return
fun();
}}catch
(exception e)
}unsigned
long
long
to_ullong()
}try
else
}return res;};
return
fun();
}}catch
(exception e)}}
;//重寫輸出輸出運算子時,只能採用全域性函式的方式,因為不能再ostream和istream類中編寫成員函式。將過載輸入輸出運算子和函式宣告為友元函式。並且返回輸入輸出流物件,支援鏈式操作。
template
ostream&
operator
<<
(ostream& out, mybitset
& b)
return out;
}vector<
bool
>
inttobinary
(unsigned
long
long n)
return v;
}int
main()
C bitset類的使用與簡介
介紹 有些程式需要處理二進位制有序集,標準庫提供了bitset 型別,事實上,bitset 是乙個二進位制容器,容器中每乙個元素都是一位二進位製碼,或為 0,或為 1。使用 include using std bitset 1.定義與初始化 在定義 bitset 時,要明確 bitset 有多少位,...
C bitset的簡單使用示例
bitset 一般代替 bool 陣列使用,常用於優化空間,因為 bitset 中乙個元素只佔 1 bit。bitset 的大小在定義使就需要確定。如果想要不定長的 bitset,就需要使用 vector。bitset 的定義 bitset 16 bt 定義大小為16的bitset,每一位都是0 b...
C bitset 二進位制位的有序集
c 的 bitset 在 bitset 標頭檔案中,它是一種類似陣列的結構,它的每乙個元素只能是 或 每個元素僅用 bit空間。bitset常用建構函式有四種,如下 bitset 4 bitset1 無參構造,長度為 預設每一位為 bitset 8 bitset2 12 長度為 二進位制儲存,前面用...