1.什麼是C&C++的標準庫?
C語言被髮明出來時並無什麼庫函數,隨着C語言的流行,愈來愈多的廠商或者機構組織開始提供C的編譯器,而且同時把常常用到的函數封裝成「庫」的形式發佈;不一樣的組織發佈的庫函數的接口和數量各不相同。後來,標準化組織ANSI制定了C語言的標準,同時也制定了必定數量的庫(或庫函數),就就成爲標準庫函數。(後來這個ANSI C標準上升爲ISO標準,可是內容並無變化!誰讓美國是老大來着,並且C的源產地就是美國)。
C不具備面向對象的特色,對C語言擴充後就產生了C++語言;固然,像ISO這樣的標準組織也要爲其制定標準呀,因而相應的繼承了C語言的基礎上也出現了C++的標準庫。ios
有兩點須要注意:
1.C++的標準庫不單單是C標準庫的繼承,還擴充了很多庫函數。(C標準庫中大約對應十幾個頭文件,而C++中有50多個。)
2.C語言中的庫的頭文件能夠直接應用於C++的源程序中(如使用#include<math.h>);然而最新的C++標準草案的新規定不在使用上述方式,而是使用C++新的方法,即#include<cmath>;就是「加頭去尾」。算法
2.C標準庫有哪些?
它們分別對應一些頭文件:
assert.h;
ctype.h;
error.h;
float.h;
limits.h;
locate.h;
math.h;
setjmp.h;
signal.h;
stdarg.h;
stddef.h;
stdio.h;
stdlib.h;
string.h;
time.h
共十五個頭文件。
3.C++標準庫有哪些?數組
C++標準庫的全部頭文件都沒有擴展名(#include<cmath>);在C++中還可使用name.h形式的標準C庫頭文件名(不建議這樣使用!!!)
C++標準庫的內容總共在50個標準頭文件中定義,其中18個提供了C庫的功能。 <cname>形式的標準頭文件【 <complex>例外】其內容與ISO標準C包含的name.h頭文件相同,但容納了C++擴展的功能。在 <cname>形式標準的頭文件中,與「宏」相關的名稱在全局做用域中定義,其餘名稱在std命名空間中聲明。緩存
C++標準庫的內容分爲10類:
1. 語言支持
2. 輸入/輸出
3. 診斷
4. 通常工具
5. 字符串
6. 容器
7. 迭代器支持
8. 算法
9. 數值操做
10. 本地化安全
1. 標準庫中與語言支持功能相關的頭文件
<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樣式支持數據結構
2. 支持流輸入/輸出的頭文件
< iostream> 支持標準流cin、cout、cerr和clog的輸入和輸出,它還支持多字節字符標準流wcin、wcout、wcerr和wclog。
<iomanip> 提供操縱程序,容許改變流的狀態,從而改變輸出的格式。
<ios> 定義iostream的基類
<istream> 爲管理輸出流緩存區的輸入定義模板類
<ostream> 爲管理輸出流緩存區的輸出定義模板類
<sstream> 支持字符串的流輸入輸出
<fstream> 支持文件的流輸入輸出
<iosfwd> 爲輸入輸出對象提供向前的聲明
<streambuf> 支持流輸入和輸出的緩存
<cstdio> 爲標準流提供C樣式的輸入和輸出
<cwchar> 支持多字節字符的C樣式輸入輸出函數
3. 與診斷功能相關的頭文件
<stdexcept> 定義標準異常。異常是處理錯誤的方式
<cassert> 定義斷言宏,用於檢查運行期間的情形
<cerrno> 支持C樣式的錯誤信息工具
4. 定義工具函數的頭文件
<utility> 定義重載的關係運算符,簡化關係運算符的寫入,它還定義了pair類型,該類型是一種模板類型,能夠存儲一對值。這些功能在庫的其餘地方使用
<functional>定義了許多函數對象類型和支持函數對象的功能,函數對象是支持operator()()函數調用運算符的任意對象
<memory> 給容器、管理內存的函數和auto_ptr模板類定義標準內存分配器
<ctime> 支持系統時鐘函數指針
5. 支持字符串處理的頭文件對象
<string> 爲字符串類型提供支持和定義,包括單字節字符串(由char組成)的string和多字節字符串(由wchar_t組成)
<cctype> 單字節字符類別
<cwctype> 多字節字符類別
<cstring> 爲處理非空字節序列和內存塊提供函數。這不一樣於對應的標準C庫頭文件,幾個C樣式字符串的通常C庫函數被返回值爲const和非const的函數對替代了
<cwchar> 爲處理、執行I/O和轉換多字節字符序列提供函數,這不一樣於對應的標準C庫頭文件,幾個多字節C樣式字符串操做的通常C庫函數被返回值爲const和非const的函數對替代了。
<cstdlib> 爲把單字節字符串轉換爲數值、在多字節字符和多字節字符串之間轉換提供函數
6. 定義容器類的模板的頭文件
<vector> 定義vector序列模板,這是一個大小能夠從新設置的數組類型,比普通數組更安全、更靈活
<list> 定義list序列模板,這是一個序列的鏈表,經常在任意位置插入和刪除元素
<deque> 定義deque序列模板,支持在開始和結尾的高效插入和刪除操做
<queue> 爲隊列(先進先出)數據結構定義序列適配器queue和priority_queue
<stack> 爲堆棧(後進先出)數據結構定義序列適配器stack
<map> map是一個關聯容器類型,容許根據鍵值是惟一的,且按照升序存儲。multimap相似於map,但鍵不是惟一的。
<set> set是一個關聯容器類型,用於以升序方式存儲惟一值。multiset相似於set,可是值沒必要是惟一的。
<bitset> 爲固定長度的位序列定義bitset模板,它能夠看做固定長度的緊湊型bool數組
7. 支持迭代器的頭文件
<iterator> 給迭代器提供定義和支持
8. 有關算法的頭文件
<algorithm> 提供一組基於算法的函數,包括置換、排序、合併和搜索
<cstdlib> 聲明C標準庫函數bsearch()和qsort(),進行搜索和排序
<ciso646> 容許在代碼中使用and代替&&
9. 有關數值操做的頭文件
<complex> 支持複雜數值的定義和操做
<valarray> 支持數值矢量的操做
<numeric> 在數值序列上定義一組通常數學操做,例如accumulate和inner_product
<cmath> 這是C數學庫,其中還附加了重載函數,以支持C++約定
<cstdlib> 提供的函數能夠提取整數的絕對值,對整數進行取餘數操做
10. 有關本地化的頭文件 <locale> 提供的本地化包括字符類別、排序序列以及貨幣和日期表示。 <clocale> 對本地化提供C樣式支持