C++標准庫的內容分為10類:
C1.語言支持 C2.輸入/輸出 C3.診斷 C4.一般工具 C5.字符串
C6.容器 C7.迭代器支持 C8.算法 C9.數值操作 C10.本地化;
下面分類詳解:
C1
標准庫中與語言支持功能相關的頭文件 頭文件 描述
定義宏NULL和offsetof,以及其他標准類型size_t和ptrdiff_t。與對應的標准C頭文件的區別是,NULL是C++空指針常量的補充定義,宏offsetof接受結構或者聯合類型參數,只要他們沒有成員指針類型的非靜態成員即可。
提供與基本數據類型相關的定義。例如,對於每個數值數據類型,它定義了可以表示出來的最大值和最小值以及二進制數字的位數。
提供與基本整數數據類型相關的C樣式定義。這些信息的C++樣式定義在 中
提供與基本浮點型數據類型相關的C樣式定義。這些信息的C++樣式定義在 中
提供支持程序啟動和終止的宏和函數。這個頭文件還聲明了許多其他雜項函數,例如搜索和排序函數,從字符串轉換為數值等函數。它與對應的標准C頭文件stdlib.h不同,定義了abort(void)。abort()函數還有額外的功能,它不為靜態或自動對象調用析構函數,也不調用傳給atexit()函數的函數。它還定義了exit()函數的額外功能,可以釋放靜態對象,以注冊的逆序調用用atexit()注冊的函數。清除並關閉所有打開的C流,把控制權返回給主機環境。
支持動態內存分配
支持變量在運行期間的類型標識
支持異常處理,這是處理程序中可能發生的錯誤的一種方式
支持接受數量可變的參數的函數。即在調用函數時,可以給函數傳送數量不等的數據項。它定義了宏va_arg、va_end、va_start以及va_list類型
為C樣式的非本地跳躍提供函數。這些函數在C++中不常用
為中斷處理提供C樣式支持
C2
支持流輸入/輸出的頭文件 頭文件 描述
< iostream> 支持標准流cin、cout、cerr和clog的輸入和輸出,它還支持多字節字符標准流wcin、wcout、wcerr和wclog。
提供操縱程序,允許改變流的狀態,從而改變輸出的格式。
定義iostream的基類
為管理輸出流緩存區的輸入定義模板類
為管理輸出流緩存區的輸出定義模板類
支持字符串的流輸入輸出
支持文件的流輸入輸出
為輸入輸出對象提供向前的聲明
支持流輸入和輸出的緩存
為標准流提供C樣式的輸入和輸出
支持多字節字符的C樣式輸入輸出
C3
與診斷功能相關的頭文件 頭文件 描述
定義標准異常。異常是處理錯誤的方式
定義斷言宏,用於檢查運行期間的情形
支持C樣式的錯誤信息
C4
定義工具函數的頭文件 頭文件 描述
定義重載的關系運算符,簡化關系運算符的寫入,它還定義了pair類型,該類型是一種模板類型,可以存儲一對值。這些功能在庫的其他地方使用
定義了許多函數對象類型和支持函數對象的功能,函數對象是支持operator()()函數調用運算符的任意對象
給容器、管理內存的函數和auto_ptr模板類定義標准內存分配器
支持系統時鍾函數
C5
支持字符串處理的頭文件 頭文件 描述
為字符串類型提供支持和定義,包括單字節字符串(由char組成)的string和多字節字符串(由wchar_t組成)
單字節字符類別
多字節字符類別
為處理非空字節序列和內存塊提供函數。這不同於對應的標准C庫頭文件,幾個C樣式字符串的一般C庫函數被返回值為const和非const的函數對替代了
為處理、執行I/O和轉換多字節字符序列提供函數,這不同於對應的標准C庫頭文件,幾個多字節C樣式字符串操作的一般C庫函數被返回值為const和非const的函數對替代了。
為把單字節字符串轉換為數值、在多字節字符和多字節字符串之間轉換提供函數
C6
定義容器類的模板的頭文件 頭文件 描述
定義vector序列模板,這是一個大小可以重新設置的數組類型,比普通數組更安全、更靈活
定義list序列模板,這是一個序列的鏈表,常常在任意位置插入和刪除元素
定義deque序列模板,支持在開始和結尾的高效插入和刪除操作
為隊列(先進先出)數據結構定義序列適配器queue和priority_queue
為堆棧(后進先出)數據結構定義序列適配器stack
map是一個關聯容器類型,允許根據鍵值是唯一的,且按照升序存儲。multimap類似於map,但鍵不是唯一的。
set是一個關聯容器類型,用於以升序方式存儲唯一值。multiset類似於set,但是值不必是唯一的。
為固定長度的位序列定義bitset模板,它可以看作固定長度的緊湊型bool數組
C7
支持迭代器的頭文件 頭文件 描述
給迭代器提供定義和支持
C8
有關算法的頭文件 頭文件 描述
提供一組基於算法的函數,包括置換、排序、合並和搜索
聲明C標准庫函數bsearch()和qsort(),進行搜索和排序
允許在代碼中使用and代替&&
C9
有關數值操作的頭文件 頭文件 描述
支持復雜數值的定義和操作
支持數值矢量的操作
在數值序列上定義一組一般數學操作,例如accumulate和inner_product
這是C數學庫,其中還附加了重載函數,以支持C++約定
提供的函數可以提取整數的絕對值,對整數進行取余數操作
C10
有關本地化的頭文件 頭文件 描述
提供的本地化包括字符類別、排序序列以及貨幣和日期表示。
對本地化提供C樣式支持
與STL的關系
STL即標准模板庫(Standard Template Library),它包括五大類組件:算法、容器、迭代器、函數對象、適配器。
std名字空間中的那些不帶.h的頭文件,如std::string,及IO流都不屬於STL,但它們是STL兼容的,可以應用迭代器,算法等。雖然std::string和IO流也是模板類,但並不屬於STL。
STLPort中包括了IO流,string類等,這是比STL更大的庫實現。但是某些STL類沒有在標准庫中實現,如hash map,而在STLPort中實現了。
C++標准庫包含一個STL的實現,但該實現是標准STL的子集。// 這句話有待考證,反正知道:標准庫也很強大,就是了。
C/C++標准庫主要包含3部分: STL、IO流及本地化、C的函數庫。
STL是標准模板庫,是標准庫的一個子集。它是一個可復用的組件庫,其中包含了很多實用的算法和數據結構。stl是一個泛型思維的集中體現。
以上是轉載的博文,感謝原博主。(原文有些語病,經過我的一些修改)
來源:CSDN
轉載的原文地址:https://blog.csdn.net/qq_38906523/article/details/78268238
大致的參考圖片如下:(細節參考本文上述文字)
下面介紹一下C++編譯環境,這是更高一層的范疇哦
ps: C++標准庫(不帶.h),涵蓋了C庫的功能。 C語言兼容庫通過帶.h后綴的頭文件被調用。