C++ STL與泛型編程-第一篇
本章內(nèi)容:
1 C++ Standard Library vs. Standard Template Library
2 C++的幾個重要網(wǎng)頁
3 STL相關(guān)基礎(chǔ)知識
3.1 STL六大部件
3.2 STL六大部件關(guān)系
3.3 容器-結(jié)構(gòu)與分類
4 容器使用示例
5 分配器使用示例
1 C++ Standard Library vs. Standard Template Library
- C++ Standard Library -- C++標(biāo)準(zhǔn)庫
- Standard Template Library -- STL,標(biāo)準(zhǔn)模板庫
標(biāo)準(zhǔn)庫以header files
形式呈現(xiàn): - C++標(biāo)準(zhǔn)庫的
header files
不帶后綴名(.h),例如#include <vector>
- 新式
C header files
不帶后綴名.h谎仲,例如#include <cstdio>
- 舊式
C header files
(帶后綴名.h)仍然可用,例如#include <stdio.h>
- 新式
headers
內(nèi)的組件封裝于namespace std
嘱能,用法如下:
1).using namespace std;
2).using std::cout;
- 舊式
headers
內(nèi)的組件不封裝于namespace std
頭文件使用示例:
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
2 C++的幾個重要網(wǎng)頁
1). www.cplusplus.com
2). en.cppreference.com
3). gcc.gnu.org
3 STL相關(guān)基礎(chǔ)知識
3.1 STL六大部件
- 容器(Containers)
- 分配器(Allocators)
- 算法(Algorithms)
- 迭代器(Interators)
- 適配器(Adapters)
- 仿函數(shù)(Functors)
3.2 STL六大部件關(guān)系
-
六大部件之間的關(guān)系如下圖所示:
-
六大部件代碼調(diào)用示例:
3.3 容器-結(jié)構(gòu)與分類
-
STL中容器結(jié)構(gòu)分成如下幾種:
4 容器使用示例
-
公共函數(shù)部分如下所示:
4.1 使用容器array
-
array容器的相關(guān)測試代碼和結(jié)果如下:
4.2 使用容器vector
-
vector容器的相關(guān)測試代碼和結(jié)果如下:
4.3 使用容器list
-
list容器的相關(guān)測試代碼和結(jié)果如下:
4.4 使用容器forward_list
-
forward_list容器的相關(guān)測試代碼和結(jié)果如下:
4.5 使用容器deque
-
容器deque的內(nèi)存結(jié)構(gòu)如下圖所示:
-
deque容器的相關(guān)測試代碼和結(jié)果如下:
4.6 使用容器stack
-
stack容器的相關(guān)測試代碼和結(jié)果如下:
4.7 使用容器queue
-
queue容器的相關(guān)測試代碼和結(jié)果如下:
4.8 使用容器multiset
-
multiset容器的相關(guān)測試代碼和結(jié)果如下:
4.9 使用容器multimap
-
multimap容器的相關(guān)測試代碼和結(jié)果如下:
4.10 使用容器unordered_multiset
- unordered_multiset容器的相關(guān)測試代碼和結(jié)果如下:
![unordered_multiset測試代碼]和結(jié)果](http://upload-images.jianshu.io/upload_images/4614591-ecd870b07f3f600f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4.11 使用容器unordered_multimap
-
unordered_multimap容器的相關(guān)測試代碼和結(jié)果如下:
4.12 使用容器set
-
set容器的相關(guān)測試代碼和結(jié)果如下:
4.13 使用容器map
-
map容器的相關(guān)測試代碼和結(jié)果如下:
5 分配器使用示例
-
分配器的使用如下圖所示:
-
STL分配器allocator有如下幾種:
array_allocator
mt_allocator
debug_allocator
pool_allocator
bitmap_allocator
malloc_allocator
new_allocator
-
分配器的結(jié)構(gòu)和使用示例如下圖所示:
-
分配器的測試代碼如下圖所示: