C++ STL與泛型程式設計-第一篇 (Boolan)
C++ STL與泛型程式設計-第一篇 (Boolan)
本章內容:
1 C++ Standard Library vs. Standard Template Library
2 C++的幾個重要網頁
3 STL相關基礎知識
3.1 STL六大部件
3.2 STL六大部件關係
3.3 容器-結構與分類
4 容器使用示例
5 分配器使用示例
1 C++ Standard Library vs. Standard Template Library
- C++ Standard Library -- C++標準庫
- Standard Template Library -- STL,標準模板庫
標準庫以header files
形式呈現: - C++標準庫的
header files
不帶字尾名(.h),例如#include <vector>
- 新式
C header files
不帶字尾名.h,例如#include <cstdio>
- 舊式
C header files
(帶字尾名.h)仍然可用,例如#include <stdio.h>
- 新式
headers
內的元件封裝於namespace std
,用法如下:
1).using namespace std;
2).using std::cout;
- 舊式
headers
內的元件不封裝於namespace std
標頭檔案使用示例:
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
2 C++的幾個重要網頁
1). www.cplusplus.com
2). en.cppreference.com
3). gcc.gnu.org
3 STL相關基礎知識
3.1 STL六大部件
- 容器(Containers)
- 分配器(Allocators)
- 演算法(Algorithms)
- 迭代器(Interators)
- 介面卡(Adapters)
- 仿函式(Functors)
3.2 STL六大部件關係
-
六大部件之間的關係如下圖所示:
-
六大部件程式碼呼叫示例:
3.3 容器-結構與分類
-
STL中容器結構分成如下幾種:
4 容器使用示例
-
公共函式部分如下所示:
4.1 使用容器array
-
array容器的相關測試程式碼和結果如下:
4.2 使用容器vector
-
vector容器的相關測試程式碼和結果如下:
4.3 使用容器list
-
list容器的相關測試程式碼和結果如下:
4.4 使用容器forward_list
-
forward_list容器的相關測試程式碼和結果如下:
4.5 使用容器deque
-
容器deque的記憶體結構如下圖所示:
-
deque容器的相關測試程式碼和結果如下:
4.6 使用容器stack
-
stack容器的相關測試程式碼和結果如下:
4.7 使用容器queue
-
queue容器的相關測試程式碼和結果如下:
4.8 使用容器multiset
-
multiset容器的相關測試程式碼和結果如下:
4.9 使用容器multimap
-
multimap容器的相關測試程式碼和結果如下:
4.10 使用容器unordered_multiset
- unordered_multiset容器的相關測試程式碼和結果如下:
![unordered_multiset測試程式碼]和結果](http://upload-images.jianshu.io/upload_images/4614591-ecd870b07f3f600f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4.11 使用容器unordered_multimap
-
unordered_multimap容器的相關測試程式碼和結果如下:
4.12 使用容器set
-
set容器的相關測試程式碼和結果如下:
4.13 使用容器map
-
map容器的相關測試程式碼和結果如下:
5 分配器使用示例
-
分配器的使用如下圖所示:
-
STL分配器allocator有如下幾種:
array_allocator
mt_allocator
debug_allocator
pool_allocator
bitmap_allocator
malloc_allocator
new_allocator
-
分配器的結構和使用示例如下圖所示:
-
分配器的測試程式碼如下圖所示:
相關文章
- C++ primer 模板與泛型程式設計C++泛型程式設計
- c++ 泛型程式設計 之 TypeListsC++泛型程式設計
- boolan c++ stl 第四周筆記C++筆記
- c++ 泛型 程式設計 之 Functor 設計模式C++泛型程式設計設計模式
- 泛型程式設計與 OI——modint泛型程式設計
- (Boolan)C++設計模式 ——策略模式(Strategy)C++設計模式
- 泛型程式設計泛型程式設計
- c++ 泛型程式設計 之 自動生成程式碼C++泛型程式設計
- C++ 泛型程式設計基礎:模板通識C++泛型程式設計
- java 泛型程式設計Java泛型程式設計
- 【C++ 泛型程式設計01:模板】函式模板與類别範本C++泛型程式設計函式
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- C++ 簡單實現陣列類泛型程式設計示例C++陣列泛型程式設計
- 泛型程式設計詳解(一)泛型程式設計
- 物件導向程式設計和`GP`泛型程式設計物件程式設計泛型
- .NET泛型程式設計簡介 (轉)泛型程式設計
- 用超程式設計來判斷STL型別程式設計型別
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- GO語言泛型程式設計實踐Go泛型程式設計
- C++ 模板與STLC++
- 泛型程式設計在非C++語言中的實現之探討 (轉)泛型程式設計C++
- 在C語言中實現泛型程式設計C語言泛型程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計
- Swift使用協議加泛型程式設計(一)Swift協議泛型程式設計
- 【STL 原始碼剖析】淺談 STL 迭代器與 traits 程式設計技法原始碼AI程式設計
- Rust 程式設計影片教程(進階)——001 泛型Rust程式設計泛型
- 使用 Go 泛型的函數語言程式設計Go泛型函數程式設計
- 02. 程式設計核心內功心法之泛型程式設計泛型
- [.net 物件導向程式設計基礎] (18) 泛型物件程式設計泛型
- 談談 "JS 和 設計泛型"JS泛型
- C++泛型演算法C++泛型演算法
- c++ 泛型 之 TypeTraintsC++泛型AI
- 好程式設計師Java培訓之泛型繼承原理與用法詳解程式設計師Java泛型繼承
- Rust 程式設計視訊教程(進階)——001 泛型Rust程式設計泛型
- java筆記-two-java泛型程式設計(簡記)Java筆記泛型程式設計
- [CUJ]泛型程式設計--轉移建構函式 (轉)泛型程式設計函式
- STL程式設計實踐五:巢狀式的型別宣告 (轉)程式設計巢狀型別
- C++ STL 記憶體配置的設計思想與關鍵原始碼分析C++記憶體原始碼