第十二章 12 3 2節練習

2021-06-25 11:01:08 字數 759 閱讀 2105

練習12.30

定義你自己版本的textquery和queryresult類,並執行12.3.1節(第431頁)中的runqueries函式。

解答:將**敲入計算機,進行除錯。

練習12.31

如果用vector代替set儲存行號,會有什麼差別?哪種方式更好?為什麼?

解答:使用vector來代替set來儲存行號也是可行的,不過需要有個查重的步驟,然後通過是否有重複的行號。

相較而言肯定是set更為合適一些,少了去重的步驟,易與理解,也讓程式的效率更高。

練習12.32

重寫textquery和queryresult類,用strblob代替vector儲存輸入檔案。

解答:其實strblob在本質上和vector沒什麼區別,幾乎就可以無縫替換的。

在替換的時候,注意一下shared_ptr那一部分就可以了。

當然,想要在練習一下weak_ptr,可以吧strblobptr也加上一起使用。

練習12.33

在第15章中我們將擴充套件查詢系統,在queryresult類中將會須要一些額外的成員。新增名為begin和end的成員,返回乙個迭代器,指向乙個給定查詢返回的行號的set中的位置。再新增乙個名為get_file的成員,返回shared_ptr,指向queryresult物件中的檔案。

解答:這裡lines是乙個set型別的指標,可以使用這個來獲取begin和end迭代器。

get_file這個成員函式,可以直接進行新增,函式在public部分,將file成員變數作為返回值。

第十二章 檔案

文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...

第十二章 dp

動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...

第十二章 異常

一 異常的概念 錯誤 編譯器 異常 執行期,程式沒有正常按照期望執行 異常產生時,在對應位置產生異常型別物件,程式 暫停 如果上下文有異常處理程式,對應處理 沒有則 異常向上傳播 報錯退出 異常向上傳播 如果異常在函式中產生,會傳播給函式的呼叫者 如果異常在模組的頂級位置,會傳播給引用該模組的模組 ...