c 標準庫和stl關係

2021-09-06 14:02:14 字數 3469 閱讀 2052

c++標準庫的所有標頭檔案都沒有副檔名。c++標準庫的內容總共在50個標準標頭檔案中定義,其中18個提供了c庫的功能。 形式的標準標頭檔案【 例外】其內容與iso標準c包含的name.h標頭檔案相同,但容納了c++擴充套件的功能。在 形式標準的標頭檔案中,與巨集相關的名稱在全域性作用域中定義,其他名稱在std命名空間中宣告。在c++中還可以使用name.h形式的標準c庫頭檔名。

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),它包括五大類元件:演算法、容器、迭代器、函式物件、介面卡。

stl是c++標準庫的一部分,但不是全部。c++標準庫是std名字空間中的所有內容,就是那些不帶.h的標頭檔案,如、。如std::string

,及io流都不屬於stl,但它們是stl相容的,可以應用迭代器,演算法等。雖然std::string和io流也是模板類,但並不屬於stl。

stl的實現,如stlport中包括了io流,string類等,其實不能確切的稱為stl實現,而是比stl更大的庫實現。但是某些stl類沒有在標準庫中實現,如hash map,stlport中實現了。c++標準庫包含乙個stl的實現,但該實現是標準stl的子集。

c/c++標準庫主要包含3部分: stl、io流及本地化、c的函式庫。

標準庫不是stl,stl是標準模板庫,是標準庫的乙個子集。它是乙個可復用的元件庫,其中包含了很多實用的演算法和資料結構。stl是乙個泛型思維的集中體現。

記得以前爭論std::string是不是stl容器,看來真不是的。

c 標準庫和stl關係

c 標準庫的所有標頭檔案都沒有副檔名。c 標準庫的內容總共在50個標準標頭檔案中定義,其中18個提供了c庫的功能。形式的標準標頭檔案 例外 其內容與iso標準c包含的name.h標頭檔案相同,但容納了c 擴充套件的功能。在 形式標準的標頭檔案中,與巨集相關的名稱在全域性作用域中定義,其他名稱在std...

C 標準庫與STL的關係

stl即標準模板庫 standard template library 它包括五大類元件 演算法 容器 迭代器 函式物件 介面卡。stl是c 標準庫的一部分,但不是全部。c 標準庫是std名字空間中的所有內容,就是那些不帶.h的標頭檔案,如 如std string,及io流都不屬於stl,但它們是s...

C 標準庫與STL的關係

stl即標準模板庫 standard template library 它包括五大類元件 演算法 容器 迭代器 函式物件 介面卡。stl是c 標準庫的一部分,但不是全部。c 標準庫是std名字空間中的所有內容,就是那些不帶.h的標頭檔案,如 如std string,及io流都不屬於stl,但它們是s...