1、C++庫中有哪些組件
※標準C庫
它還在,你可以用它,雖然有些地方有點小的修改,但是無論如何還是用了多年的C庫。
※iostream庫
和傳統的iostream的實現相比,它已經被模糊化了,繼承層次結構也做了修改,增強了拋出異常的能力,可以支持string和國際化。當然,你期望的iostream庫具有的功能幾乎全部
繼續存在。也就是說它還是支持流緩衝區,格式化標示符,操作子和文件,還有cin,cout,cerr,和clog對象。這意味着可以把string和文件當做流,還可以對流的行爲進行更廣泛
的控制,包括緩衝和格式化。
※string庫
string對象在大多數應用中被用來消除對char指針的使用。它支持你期望的那些操作,他們也可以轉化爲char*,以保持和現有代碼的兼容性,他們還自動處理內存管理。一些string
的實現運用了引用計數,這會帶來比char*的字符串更佳的性能。
※容器庫
不要再寫自己的基本容器類。標準庫提供了以下高效的實現:vector(就像動態可擴充的數組),list(雙鏈表),queue,stack,deque,map,set和bitset。唉,竟然沒有hash
table,不過多少可以補償一點的是,string是容器,這很重要,因爲這意味着對容器的所有操作對string都是可用的。
什麼?你不明白爲什麼說標準庫的實現是高效的?很簡單,標準庫規定了每個類的接口,而且每條接口規範中的一部分是一套性能保證。所以,舉例子來說,無論vector類的實現
是如何的,僅僅提供對它的元素的訪問是不夠的,還必須提供常量時間內的訪問。如果不這樣就不是一個有效的vector實現。
很多C++程序中,動態分配數組和字符串導致大量使用new和delete,new/delete的使用不正確會導致出現內存泄露。如果使用string和vector對象,而不使用char*和動態分配數
組的指針,很多的new和delete就可以免於使用,他們所帶來的問題也會隨之消失。
※算法
標準容器當然好,如果存在易於使用他們的方法就更好。標準庫提供了大量的簡易方法(既預定義函數,官方稱爲算法algorithm)。