-
c++標準庫
(類庫和函數的集合軟件)
鎖定
- 中文名
- c++標準庫
- 外文名
- C++ Standard Library
- 別 名
- C++標準程序庫
- 類 別
- 類庫和函數的集合
- 制 定
- c++標準委員會
- 來 源
- 其豐富的類庫及庫函數資源
c++標準庫基本介紹
這樣做的直接好處包括:
(1)成本:
已經作為標準提供,不必再花費時間、人力重新開發。
(2)質量:
標準庫的都是經過嚴格測試的,正確性有保證。
(3)效率:
關於人的效率已經體現在成本中了,關於代碼的執行效率要相信實現標準庫的前輩的水平。
(4)良好的編程風格:
採用行業中普遍的做法進行開發。
c++標準庫更新
c++標準庫的標準化始於1989年,由國際標準化組織(the International Organization for Standardization,ISO)推動。至今完成了四個標準,那就是各種C++ standard:
[3]
c++標準庫c++98
1998年批准,是第一份C++標準。文檔編號ISO/IEC 14882:1998。
c++標準庫c++03
是一份“技術勘誤”,修復了幾個小bug,文檔編號ISO/IEC 14882:2003。
c++標準庫TR1
內含大尺度的標準庫擴充,文檔編號ISO/IEC TR 19768:2007。
c++標準庫c++11
對c++內含語言或/和標準庫兩方面皆十分重大的改善和強化。文檔編號ISO/IEC 14882:2011。
c++標準庫內容分類
C++標準庫的內容基本可以分以下為10類
(未註明為c++98 03的標準庫)。
C1. 標準庫中與語言支持功能相關的頭文件
頭文件 | 描 述 |
- | |
提供與基本數據類型相關的定義。例如,對於每個數值數據類型,它定義了可以表示出來的最大值和最小值以及二進制數字的位數。 | |
- | 提供與基本整數數據類型相關的C樣式定義。這些信息的C++樣式定義在中 |
提供與基本浮點型數據類型相關的C樣式定義。這些信息的C++樣式定義在中 | |
提供支持程序啓動和終止的宏和函數。這個頭文件還聲明瞭許多其他雜項函數,例如搜索和排序函數,從字符串轉換為數值等函數。它與對應的標準C頭文件stdlib.h不同,定義了abort(void)。abort()函數還有額外的功能,它不為靜態或自動對象調用析構函數,也不調用傳給atexit()函數的函數。它還定義了exit()函數的額外功能,可以釋放靜態對象,以註冊的逆序調用用atexit()註冊的函數。清除並關閉所有打開的C流,把控制權返回給主機環境。 | |
new> | 支持動態內存分配 |
- | 支持變量在運行期間的類型標識 |
支持異常處理,這是處理程序中可能發生的錯誤的一種方式 | |
- | 支持接受數量可變的參數的函數。即在調用函數時,可以給函數傳送數量不等的數據項。它定義了宏va_arg、va_end、va_start以及va_list類型 |
為C樣式的非本地跳躍提供函數。這些函數在C++中不常用 | |
為中斷處理提供C樣式支持 |
C2. 支持流輸入/輸出的頭文件
頭文件 | 描 述 |
支持標準流cin、cout、cerr和clog的輸入和輸出,它還支持多字節字符標準流wcin、wcout、wcerr和wclog。 | |
提供操縱程序,允許改變流的狀態,從而改變輸出的格式。 | |
ios> | 定義iostream的基類 |
- | 為管理輸出流緩存區的輸入定義模板類 |
為管理輸出流緩存區的輸出定義模板類 | |
支持字符串的流輸入輸出 | |
支持文件的流輸入輸出 | |
為輸入輸出對象提供向前的聲明 | |
支持流輸入和輸出的緩存 | |
為標準流提供C樣式的輸入和輸出 | |
- | 支持多字節字符的C樣式輸入輸出 |
C3. 與診斷功能相關的頭文件
頭文件 | 描 述 |
- | 定義標準異常。異常是處理錯誤的方式 |
定義斷言宏,用於檢查運行期間的情形 | |
支持C樣式的錯誤信息 |
C4. 定義工具函數的頭文件
頭文件 | 描 述 |
定義重載的關係運算符,簡化關係運算符的寫入,它還定義了pair類型,該類型是一種模板類型,可以存儲一對值。這些功能在庫的其他地方使用 | |
定義了許多函數對象類型和支持函數對象的功能,函數對象是支持operator()()函數調用運算符的任意對象 | |
- | 給容器、管理內存的函數和auto_ptr模板類定義標準內存分配器 (c++11中增加shared_ptr與unique_ptr,分別支持共享與獨享的動態內存分配) |
支持系統時鐘函數 |
C5. 支持字符串處理的頭文件
頭文件 | 描 述 |
- | 為字符串類型提供支持和定義,包括單字節字符串(由char組成)的string和多字節字符串(由wchar_t組成) |
單字節字符類別 | |
多字節字符類別 | |
為處理非空字節序列和內存塊提供函數。這不同於對應的標準C庫頭文件,幾個C樣式字符串的一般C庫函數被返回值為const和非const的函數對替代了 | |
- | 為處理、執行I/O和轉換多字節字符序列提供函數,這不同於對應的標準C庫頭文件,幾個多字節C樣式字符串操作的一般C庫函數被返回值為const和非const的函數對替代了。 |
為把單字節字符串轉換為數值、在多字節字符和多字節字符串之間轉換提供函數 |
C6. 定義容器類的模板的頭文件
頭文件 | 描 述 |
定義vector序列模板,這是一個大小可以重新設置的數組類型,比普通數組更安全、更靈活 | |
list> | 定義list序列模板,這是一個序列的鏈表,常常在任意位置插入和刪除元素 |
定義deque序列模板,支持在開始和結尾的高效插入和刪除操作 | |
為隊列(先進先出)數據結構定義序列適配器queue和priority_queue | |
為堆棧(後進先出)數據結構定義序列適配器stack | |
map> | map是一個關聯容器類型,允許根據鍵值是唯一的,且按照升序存儲。multimap類似於map,但鍵不是唯一的。 |
set> | set是一個關聯容器類型,用於以升序方式存儲唯一值。multiset類似於set,但是值不必是唯一的。 |
為固定長度的位序列定義bitset模板,它可以看作固定長度的緊湊型bool數組 | |
- | (TR1)固定大小數組,支持複製 |
(c++11)單向列表,支持快速隨機訪問 | |
(TR1)無序容器set,其元素隨機存放。multiset類似於set,但是值不必是唯一的。 | |
(TR1)無序容器map,其鍵值隨機存放。multimap類似於map,但鍵不是唯一的。 |
C7. 支持迭代器的頭文件
頭文件 | 描 述 |
給迭代器提供定義和支持 |
C8. 有關算法的頭文件
頭文件 | 描 述 |
提供一組基於算法的函數,包括置換、排序、合併和搜索 | |
聲明C標準庫函數bsearch()和qsort(),進行搜索和排序 | |
- | 允許在代碼中使用and代替&& |
C9. 有關數值操作的頭文件
頭文件 | 描 述 |
支持複雜數值的定義和操作 | |
- | 支持數值矢量的操作 |
在數值序列上定義一組一般數學操作,例如accumulate和inner_product | |
這是C數學庫,其中還附加了重載函數,以支持C++約定 | |
提供的函數可以提取整數的絕對值,對整數進行取餘數操作 |
C10. 有關本地化的頭文件
頭文件 | 描 述 |
提供的本地化包括字符類別、排序序列以及貨幣和日期表示。 | |
- | 對本地化提供C樣式支持 |
- 參考資料
-
- 1. C++標準庫和標準模板庫 .CSDN.2012-05-10[引用日期2013-07-30]
- 2. C++ Reference Material Standard Library (but no STL) .C++ Standard Library reference[引用日期2013-07-30]
- 3. Nicolai M.Josuttis[德].The C++ Standard Library 《C++標準庫 第2版》:電子工業出版社,2015年6月