第十六章 - string類和標準模板庫 - 1/1

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。

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