c++標準庫摘要

1.C++編譯環境的組成:


C語言兼容庫:頭文件帶.h,是C++編譯器提供商爲推廣自己的產品,而提供的C兼容庫(不是C++標準庫提供的),內置的C庫。
C++標準庫:如string、cstdio(注意,不帶.h)是C++標準庫提供的。使用時要用using namespace std找開命名空間。
編譯器擴展庫:這是針對不同的編譯器而獨有擴展的,例如g++和vc++,它們在這一板塊就不同。
C++標準語法模塊:C++標準語法的支持。
C++擴展語法模塊:同樣是針對不同的編譯器而獨有擴展語法。
 

2.C++標準庫:


(1)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)數值操作
<complex>:支持複雜數值的定義和操作。
<valarray>:支持數值矢量的操作。
<numeric>:在數值序列上定義一組一般數學操作,例如accumulate和inner_product。
<cmath>:這是C數學庫,其中還附加了重載函數,以支持C++約定。
<cstdlib>:提供的函數可以提取整數的絕對值,對整數進行取餘數操作。

 

(4)診斷功能
<stdexcept>:定義標準異常。
<cassert>:定義斷言宏,用於運行時檢查。
<cerrno>:支持C樣式的錯誤信息。

 

(5)通用工具
 

(6)國際化
 

(7)語言支持功能
<cstddef>:定義宏NULL和offsetof以及其它標準類型size_t和ptrdiff_t。與對應的標準C頭文件的區別是,NULL是C++空指針常量的補充定義(C++11中已有關鍵字nullptr),宏offsetof接受結構或者聯合類型參數,只要沒有成員指針類型的非靜態成員即可。
<limits>:提供與基本數據類型相關的定義。例如,對於每個數值數據類型,它定義了可以表示出來的最大值和最小值以及二進制數字的位數。
<climits>:提供與基本整數數據類型相關的C樣式定義,C++樣式定義在<limits>中。
<cfloat>:提供與基本浮點型數據類型相關的C樣式定義,C++樣式定義在<limits>中。
<cstdlib>:提供支持程序啓動和終止的宏和函數,還聲明瞭許多其他雜項函數,例如搜索和排序函數,從字符串轉換爲數值等函數。<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樣式支持。

 
(8)字符串處理
<string>:爲字符串類型提供支持和定義,包括單字節字符串(由char組成)的string和多字節字符串(由wchar_t組成)。
<cctype>:單字節字符類別。
<cwctype>:多字節字符類別。
<cstring>:爲處理非空字節序列和內存塊提供函數。不同於對應的標準C庫頭文件,C樣式字符串的一般C庫函數被返回值爲const和非const的函數對替代。
<cwchar>:爲處理、執行I/O和轉換多字節字符序列提供函數,不同於對應的標準C庫頭文件,幾個多字節C樣式字符串操作的一般C庫函數被返回值爲const和非const的函數對替代。
<cstdlib>:爲把單字節字符串轉換爲數值、在多字節字符和多字節字符串之間轉換提供函數。

 

(9)容器類模板
<vector>:定義vector序列模板,是一個大小可以重新設置的數組類型,比普通數組更安全、更靈活。
<list>:定義list序列模板,是一個序列的鏈表,常常在任意位置插入和刪除元素。
<deque>:定義deque序列模板,支持在開始和結尾的高效插入和刪除操作。
<queue>:爲隊列(先進先出)數據結構定義序列適配器queue和priority_queue。
<stack>:爲堆棧(後進先出)數據結構定義序列適配器stack。
<map>:map是一個關聯容器類型,允許根據鍵值是唯一的,且按照升序存儲。multimap類似於map,但鍵不是唯一的。
<set>:set是一個關聯容器類型,用於以升序方式存儲唯一值。multiset類似於set,但是值不必是唯一的。
<bitset>:爲固定長度的位序列定義bitset模板,它可以看作固定長度的緊湊型bool數組。
<array>:(TR1)固定大小數組,支持複製。
<forward_list>:(c++11)單向列表,支持快速隨機訪問。
<unordered_set>:(TR1)無序容器set,其元素隨機存放。multiset類似於set,但是值不必是唯一的。
<unordered_map>:(TR1)無序容器map,其鍵值隨機存放。multimap類似於map,但鍵不是唯一的。

 

(10)迭代器
<iterator>:給迭代器提供定義和支持。

 

(11)算法
<algorithm>:提供一組基於算法的函數,包括置換、排序、合併和搜索。
<cstdlib>:聲明C標準庫函數bsearch()和qsort(),進行搜索和排序。
<ciso646>:允許在代碼中使用and代替&&。

 

3.C++ 標準庫
C++ 標準庫可以分爲兩部分:

標準函數庫: 這個庫是由通用的、獨立的、不屬於任何類的函數組成的。函數庫繼承自 C 語言。
面向對象類庫: 這個庫是類及其相關函數的集合。
C++ 標準庫包含了所有的 C 標準庫,爲了支持類型安全,做了一定的添加和修改。

標準函數庫:
標準函數庫分爲以下幾類:

輸入/輸出 I/O
字符串和字符處理
數學
時間、日期和本地化
動態分配
其他
寬字符函數
 

面向對象類庫:
標準的 C++ 面向對象類庫定義了大量支持一些常見操作的類,比如輸入/輸出 I/O、字符串處理、數值處理。面向對象類庫包含以下內容:

標準的 C++ I/O 類
String 類
數值類
STL 容器類
STL 算法
STL 函數對象
STL 迭代器
STL 分配器
本地化庫
異常處理類
雜項支持庫

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章