練習17.9
解釋下列每個bitset物件所包含的位模式:
(a) bitset<64> bitvec(32);
(b) bitset<32> bv(1010101);
(c) string bstr; cin >> bstr; bitset<8> bv(bstr);
解答:(a) 0x 0000 0000 0010 0000
(b) 0x 000f 69b5
(c) 這個取決於你的輸入。
1010 輸入
00001010 輸出的位模式
0111010111 輸入
01110101 輸出的位模式
11001110 輸入
11001110 輸出的位模式
這個規律也很明顯了,書642頁上也有提示。
練習17.10
使用序列1、2、3、5、8、13、21初始化乙個bitset,將這些位置置位。對另乙個bitset進行預設初始化,並編寫一小段程式將其恰當的位置位。
解答:
#include #include using namespace std;
int main()
這裡序列位從0算起的。
練習17.11
定義乙個資料結構,包含乙個整型物件,記錄乙個包含10個問題的真/假測試的解答。如果測試包含100道題,你需要對資料結構做出什麼改變(如果需要的話)?
解答:10個問題使用size_t就夠用了。但是,當有100道題的時候,單個整數就夠用了,因為2的100次方已經超過了任何內建型別的最大值,這裡可能就要使用兩個整型物件了,乙個儲存1到64題,另乙個儲存65到100題的結果。
class result;
如果不使用整型物件,這樣的問題可以直接用陣列來解決,例如:初始化乙個answer[10]=; answer[100] = 。
不過這裡可以使用bitset+模板來解決這個問題
#include #include using namespace std;
template bitsetinitbit()
int main()
這裡用的是函式,也可以用類的方式來解決。
不過自定義類,沒有直接使用bitset來得方便。
練習17.12
使用前一題中的資料結構,編寫乙個函式,它接受乙個問題編號和乙個表示真假解答的值,函式根據這兩個引數更新測驗的解答。
解答:和下一題一起解答。
練習17.13
編寫乙個整型物件,包含真假測驗的額正確答案。使用它來為前兩題中的資料結構生成測驗成績。
解答:
#include #include using namespace std;
class result
void test_answer(size_t num, size_t answer)
else
} void checkout()
private:
size_t _1_64, _65_128;
size_t a_1_64, a_65_128;
};int main()
第十七章 17 1 1節練習
練習17.1 定義乙個儲存三個int值的tuple,並將其成員分別初始化為10 20和30。解答 include include int main 練習17.2 定義乙個tuple,儲存乙個string 乙個vector和乙個pair。解答 include include include inclu...
第十七章 17 1 2節練習
練習17.4 編寫並測試你自己版本的findbook函式。解答 實現參考書中實現。練習17.5 重寫findbook,令其返回乙個pair,包含乙個索引和乙個迭代器pair。解答 typedef pair size type,pair const iterator,vector const iter...
第十七章 17 3 1節練習
練習17.14 編寫幾個正規表示式,分別觸發不同錯誤。執行你的程式,觀察編譯器對每個錯誤的輸出。解答 這個就不一一枚舉出來了。如果正規表示式寫錯,在執行時程式會在編譯表示式的時候直接崩潰。練習17.15 編寫程式,使用模式查詢違反 i在e之前,除非在c之後 規則的單詞。你的程式應該提示使用者輸入乙個...