1. 程式人生 > >C++標準庫學習

C++標準庫學習

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)。