0、本章內容:
標準C++ string類。
模板auto_ptr、unique_ptr和share_ptr。
標準模板庫(STL)。
容器類。
迭代器。
函數對象(functor)。
STL算法。
模板initiaslzer_list。
1、string類:
1.1 構造字符串
string實際上是模板具體化basic_string< char>的一個typedef,同時省略了與內存管理相關的參數。
1.2 string類輸入
指定分界字符後,換行符被視爲常規字符。
1.3 使用字符串
String對全部6個關係運算符都進行了重載。
1.4 string還提供了哪些功能
capacity返回佔用內存,reserve申請內存。
1.5 字符串種類
char、wchar_t、char16_t、char32_t。
2、智能指針模板類:
2.1 使用智能指針
三個智能指針模板都定義了類似指針的對象,可以將new獲得的地址賦給這種對象。
智能指針類都帶有一個explicit構造函數,因此不需要自動將指針轉換爲智能指針對象。
2.2 有關智能指針的注意事項
auto_ptr、unique_ptr建立所有權、share_ptr引用計數。
2.3 unique_ptr爲何優於auto_ptr
unique_ptr能夠區分是否安全,而且有一個可用於數組的變體。
2.4 選擇智能指針
share_ptr包含一個顯式構造函數,能夠把右值unique_ptr轉換爲share_ptr。
3、標準模板庫:
STL提供了一組表示容器、迭代器、函數對象和算法的模板。
3.1 模板類vector
3.2 可對矢量執行的操作
3.3 對矢量可執行的其他操作
可以定義適用於所有容器的非成員函數。
3.4 基於範圍的for循環
foreach不能修改容器內容,只是創建臨時變量來顯示輸出。
4、泛型編程:
4.1 爲何使用迭代器
4.2 迭代器類型
輸入、輸出、正向、雙向、隨機訪問。
4.3 迭代器層次結構
4.4 概念、改進和模型
迭代器爲改進,而非繼承。
4.5 容器種類
不能將類型對象存儲在容器中,除非類型是可複製構造和可賦值的。
4.6 關聯容器
set、multiset、map、multimap。
4.7 無序關聯容器(C++11)
5、函數對象:
5.1 函數符概念
一元函數、二元函數、一元謂詞、二元謂詞。
5.2 預定義的函數
transform有兩個版本。
5.3 自適應函數符和函數適配器
可以將二元函數修改爲一元函數。
6、算法:
6.1 算法組
6.2 算法的通用特徵
6.3 STL和string類
next_permutation算法將區間內容轉換爲下一種排列方式。
6.4 函數和容器方法
remove函數有多用性。
6.5 使用STL
7、其他庫:
7.1 vector、valarray 和 array
valarray類沒有begin和end方法,是對象不是指針。
slice對象參數爲其實索引、索引數、跨距。
7.2 模板initializer_list(C++11)
不能進行隱式的縮窄轉換。
7.3 使用initializer_list
不能修改initializer_list中的值,因爲initializer_list迭代器返回類型爲const。
8、總結:
null。