督促讀書,總結精華,提煉筆記,抛磚引玉,有不合适的地方,歡迎留言指正。
問題1、标準庫bitset類型(模版)
需要處理二進制位的時候,可以使用c++标準庫提供的bitset類型,它也是類模版,類似vectro容器,唯一不同的是,bitset類型需要說明長度,使用常量表達式給出的整型字面值或者已經初始化的cosnt對象。
使用無符号的值初始化bitset對象,該值被初始化為二進制序列,如果無符号值長度小于bitset對象,那麼就把高階位截掉
問題2、使用string對象初始化bitset對象需要注意的問題
使用string對象初始化bitset對象的時候,直接初始化為二進制序列,從string字元串對象的右邊開始讀取!!
問題3、bitset對象的常見操作
測出b對象裡的1的個數
注意,count函數傳回的值是size_t類型,定義在頭檔案cstddef中,c裡是stddef.h,size_t是一個無符号的和機器無關的整型。類似無符号int類型
下面這樣雖然不報錯,但是以前說過類似的問題,不建議使用,這裡就看成是錯的
類似容器vector或者string類型,bitset也有求長度的函數size()
//通路bitset對象裡的位,大同小異,類似其他容器或者标準庫,數組的下标操作
//測試bitset對象某一位是不是1
//或者直接使用下标操作的傳回值
//把所有二進制位數都設定為1
//隻是把第1位設定為1
//把所有二進制位都設定為0
//同樣,隻是設定某位為0
//取反操作
//同樣,類似操作,隻對某一位取反
//當且僅當,bitset對象的長度小于或者等于無符号long整型的變量時,可以使用如下函數
問題4、一定注意,bitset對象的下标問題,是從右邊開始的!
一定注意,下标從右邊開始是0-31,不是傳統的左邊開始了
從右邊開始0-15為1,其餘高位0填充。
問題5、如題,bitset<32> bit(1010101),初始化bit的結果是什麼?
千萬不要想當然的認為,這是寫1010101就是二進制,其實預設的是十進制形式
小結:
c++标準庫定義的數組和指針等屬于低級的抽象資料類型,而标準庫的容器比如vector,還有标準庫bitset類模版,string類型等,都是進階的抽象資料類型!其中,string類型提供了變長的字元串存儲操作,vector容器提供了對某總類型的對象的存儲操作。
還有學到的疊代器,提供了間接通路容器内對象的方法(可以代替下标)。比如通路和周遊vector容器内對象或者string類型的元素。
記住,優秀的c++程式員,應該習慣使用進階抽象資料類型,盡量避免使用低級的數組還有指針。除非是強調程式運作的速度的子產品,那樣就應該使用低級的複合資料類型,指針或者數組。
辛苦的勞動,轉載請注明出處,謝謝……
http://www.cnblogs.com/kubixuesheng/p/4145203.html