c++標準庫

簡介

C++標準庫,C++ Standard Library,是類庫函式的集合,其使用核心語言寫成,由c++標準委員會制定,並不斷維護更新。
C++強大的功能來源於其豐富的類庫及庫函式資源。C++標準庫(C++ Standard Library, 亦可稱作,C++標準程式庫)的內容總共在50個標準頭檔案中定義。在C++開發中,要儘可能地利用標準庫完成。這樣做的直接好處包括:
(1)成本:
已經作為標準提供,何苦再花費時間、人力重新開發呢。
(2)質量:
標準庫的都是經過嚴格測試的,正確性有保證。
(3)效率:
關於人的效率已經體現在成本中了,關於代碼的執行效率要相信實現標準庫的前輩的水平。
(4)良好的編程風格:
採用行業中普遍的做法進行開發。

C++標準庫

C++標準庫的內容基本可以分以下為10類。

C1. 標準庫中與語言支持功能相關的頭檔案


頭檔案

描 述

<cstddef>

定義宏NULL和offsetof,以及其他標準類型size_t和ptrdiff_t。與對應的標準C頭檔案的區別是,NULL是C++空指針常量的補充定義,宏offsetof接受結構或者聯合類型參數,只要他們沒有成員指針類型的非靜態成員即可。

<limits>

提供與基本數據類型相關的定義。例如,對於每個數值數據類型,它定義了可以表示出來的最大值和最小值以及二進制數字的位數。

<climits>

提供與基本整數數據類型相關的C樣式定義。這些信息的C++樣式定義在<limits>中

<cfloat>

提供與基本浮點型數據類型相關的C樣式定義。這些信息的C++樣式定義在<limits>中

<cstdlib>

提供支持程式啟動和終止的宏和函式。這個頭檔案還聲明了許多其他雜項函式,例如搜尋和排序函式,從字元串轉換為數值等函式。它與對應的標準C頭檔案stdlib.h不同,定義了abort(void)。abort()函式還有額外的功能,它不為靜態或自動對象調用析構函式,也不調用傳給atexit()函式的函式。它還定義了exit()函式的額外功能,可以釋放靜態對象,以註冊的逆序調用用atexit()註冊的函式。清除並關閉所有打開的C流,把控制權返回給主機環境。

<new>

支持動態記憶體分配

<typeinfo>

支持變數在運行期間的類型標識

<exception>

支持異常處理,這是處理程式中可能發生的錯誤的一種方式

<cstdarg>

支持接受數量可變的參數的函式。即在調用函式時,可以給函式傳送數量不等的數據項。它定義了宏va_arg、va_end、va_start以及va_list類型

<csetjmp>

為C樣式的非本地跳躍提供函式。這些函式在C++中不常用

<csignal>

為中斷處理提供C樣式支持

C2. 支持流輸入/輸出的頭檔案


頭檔案

描 述

<iostream>

支持標準流cin、cout、cerr和clog的輸入和輸出,它還支持多位元組字元標準流wcin、wcout、wcerr和wclog。

<iomanip>

提供操縱程式,允許改變流的狀態,從而改變輸出的格式。

<ios>

定義iostream的基類

<istream>

為管理輸出流快取區的輸入定義模板類

<ostream>

為管理輸出流快取區的輸出定義模板類

<sstream>

支持字元串的流輸入輸出

<fstream>

支持檔案的流輸入輸出

<iosfwd>

為輸入輸出對象提供向前的聲明

<streambuf>

支持流輸入和輸出的快取

<cstdio>

為標準流提供C樣式的輸入和輸出

<cwchar>

支持多位元組字元的C樣式輸入輸出

C3. 與診斷功能相關的頭檔案


頭檔案

描 述

<stdexcept>

定義標準異常。異常是處理錯誤的方式

<cassert>

定義斷言宏,用於檢查運行期間的情形

<cerrno>

支持C樣式的錯誤信息

C4. 定義工具函式的頭檔案


頭檔案

描 述

<utility>

定義重載的關係運算符,簡化關係運算符的寫入,它還定義了pair類型,該類型是一種模板類型,可以存儲一對值。這些功能在庫的其他地方使用

<functional>

定義了許多函式對象類型和支持函式對象的功能,函式對象是支持operator()()函式調用運算符的任意對象

<memory>

給容器、管理記憶體的函式和auto_ptr模板類定義標準記憶體分配器

<ctime>

支持系統時鐘函式

C5. 支持字元串處理的頭檔案


頭檔案

描 述

<string>

為字元串類型提供支持和定義,包括單位元組字元串(由char組成)的string和多位元組字元串(由wchar_t組成)

<cctype>

單位元組字元類別

<cwctype>

多位元組字元類別

<cstring>

為處理非空位元組序列和記憶體塊提供函式。這不同於對應的標準C庫頭檔案,幾個C樣式字元串的一般C庫函式被返回值為const和非const的函式對替代了

<cwchar>

為處理、執行I/O和轉換多位元組字元序列提供函式,這不同於對應的標準C庫頭檔案,幾個多位元組C樣式字元串操作的一般C庫函式被返回值為const和非const的函式對替代了。

<cstdlib>

為把單位元組字元串轉換為數值、在多位元組字元和多位元組字元串之間轉換提供函式

C6. 定義容器類的模板的頭檔案


頭檔案

描 述

<vector>

定義vector序列模板,這是一個大小可以重新設定的數組類型,比普通數組更安全、更靈活

<list>

定義list序列模板,這是一個序列的鍊表,常常在任意位置插入和刪除元素

<deque>

定義deque序列模板,支持在開始和結尾的高效插入和刪除操作

<queue>

為佇列(先進先出)數據結構定義序列適配器queue和priority_queue

<stack>

為堆疊(後進先出)數據結構定義序列適配器stack

<map>

map是一個關聯容器類型,允許根據鍵值是唯一的,且按照升序存儲。multimap類似於map,但鍵不是唯一的。

<set>

set是一個關聯容器類型,用於以升序方式存儲唯一值。multiset類似於set,但是值不必是唯一的。

<bitset>

為固定長度的位序列定義bitset模板,它可以看作固定長度的緊湊型bool數組

C7. 支持疊代器的頭檔案


頭檔案

描 述

<iterator>

給疊代器提供定義和支持

C8. 有關算法的頭檔案


頭檔案

描 述

<algorithm>

提供一組基於算法的函式,包括置換、排序、合併和搜尋

<cstdlib>

聲明C標準庫函式bsearch()和qsort(),進行搜尋和排序

<ciso646>

允許在代碼中使用and代替&&

C9. 有關數值操作的頭檔案


頭檔案

描 述

<complex>

支持複雜數值的定義和操作

<valarray>

支持數值矢量的操作

<numeric>

在數值序列上定義一組一般數學操作,例如accumulate和inner_product

<cmath>

這是C數學庫,其中還附加了重載函式,以支持C++約定

<cstdlib>

提供的函式可以提取整數的絕對值,對整數進行取餘數操作

C10. 有關本地化的頭檔案


頭檔案

描 述

<locale>

提供的本地化包括字元類別、排序序列以及貨幣和日期表示。

<clocale>

對本地化提供C樣式支持

相關詞條

相關搜尋

熱門詞條

聯絡我們