練習11.37
乙個無序容器與其有序容器版本相比有何優勢?有序版本有何優勢?
解答:在關鍵字型別的元素沒有明顯的有序關係的情況下,無序容器是非常有用的。在某些應用中,維護元素的序代價非常高昂,此事無需容器也很有用。
雖然理論上雜湊技術能獲得更好的平均效能,但在實際中想要達到很好的效果還需要進行一些效能測試盒調優工作。因此,使用無序容器通常更為簡單。
練習11.38
用unordered_map重寫單詞計數程式(參見11.1節,第375頁)和單詞轉換程式(參見11.3.6節,第391頁)
解答:
#include #include #include #include #include #include using namespace std;
unordered_mapbuildmap(ifstream &map_file));
} else
} return trans_map;
}const string& transform(const string &s, const unordered_map&m)
else
}void word_transform(ifstream &map_file, ifstream &input)
else
// transform返回它的第乙個引數或其轉換之後的形式
cout << transform(word, trans_map); // 列印輸出
} cout << endl; }}
int main()
直接將map替換為unordered_map即可。
對於單詞計數程式,在394頁已經給出,這裡就不再寫了。
第十一章 11 2 3節練習
練習11.12 編寫程式,讀入string和int的序列,將每個string和int存入乙個pair中,pair儲存在乙個vector中。解答 include include include include include using namespace std int main auto sfir...
第十一章 11 3 5節練習
練習11.27 對於什麼問題你會用count來解決?什麼時候你又會選擇find呢?解答 引用 應該使用哪個操作依賴與我們要解決什麼問題。如果我們所關心的只不過是乙個特定元素是否已在容器中,可能find是最佳的選擇。對於不允許重複關鍵字的容器,可能使用find還是count沒有什麼區別。但對於允許重複...
第十一章 11 3 6節練習
練習11.33 實現你自己版本的單詞轉換程式。解答 include include include include include using namespace std mapbuildmap ifstream map file else return trans map const string...