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
-
分配器的結構和使用示例如下圖所示:
-
分配器的測試程式碼如下圖所示:
相關文章
- 泛型程式設計與 OI——modint泛型程式設計
- C++提高程式設計-STLC++程式設計
- 泛型程式設計泛型程式設計
- java 泛型程式設計Java泛型程式設計
- 【C++ 泛型程式設計01:模板】函式模板與類别範本C++泛型程式設計函式
- 十、GO程式設計模式 : 泛型程式設計Go程式設計設計模式泛型
- 泛型程式設計詳解(一)泛型程式設計
- 物件導向程式設計和`GP`泛型程式設計物件程式設計泛型
- 用超程式設計來判斷STL型別程式設計型別
- 【STL 原始碼剖析】淺談 STL 迭代器與 traits 程式設計技法原始碼AI程式設計
- GO語言泛型程式設計實踐Go泛型程式設計
- 泛型最佳實踐:Go泛型設計者教你如何用泛型泛型Go
- Swift使用協議加泛型程式設計(一)Swift協議泛型程式設計
- Rust 程式設計影片教程(進階)——001 泛型Rust程式設計泛型
- 在C語言中實現泛型程式設計C語言泛型程式設計
- C語言如何實現泛型程式設計?C語言泛型程式設計
- C++泛型一:模板C++泛型
- Rust 程式設計視訊教程(進階)——001 泛型Rust程式設計泛型
- 使用 Go 泛型的函數語言程式設計Go泛型函數程式設計
- 02. 程式設計核心內功心法之泛型程式設計泛型
- Java中的泛型程式設計:深入理解型別引數與型別邊界的使用Java泛型程式設計型別
- 好程式設計師Java培訓之泛型繼承原理與用法詳解程式設計師Java泛型繼承
- 談談 "JS 和 設計泛型"JS泛型
- java筆記-two-java泛型程式設計(簡記)Java筆記泛型程式設計
- Go泛型草案設計簡明指南Go泛型
- 現代c++與模板超程式設計C++程式設計
- 好程式設計師Java教程分享Java難點解析之泛型程式設計師Java泛型
- Java核心技術第八章——泛型程式設計(1)Java泛型程式設計
- C++ STL -- vectorC++
- C++ STL -- listC++
- C++ STL -- HashTableC++
- C++ STL stackC++
- C++ STL listC++
- Rust 泛型與特性Rust泛型
- Kotlin語言中的泛型設計哲學Kotlin泛型
- C++:與C混合程式設計 CMake undefined reference toC++程式設計Undefined
- 《Java核心技術(卷1)》筆記:第8章 泛型程式設計Java筆記泛型程式設計
- C++核心程式設計C++程式設計
- C++ STL deque容器C++