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
  • 新式C header files不带后缀名.h,例如#include
  • 旧式C header files(带后缀名.h)仍然可用,例如#include
  • 新式headers内的组件封装于namespace std,用法如下:
    1). using namespace std;
    2). using std::cout;
  • 旧式headers内的组件不封装于namespace std
    头文件使用示例:
    #include
    #include
    #include
    #include
    #include
    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六大部件关系

  • 六大部件之间的关系如下图所示:


    C++ STL与泛型编程-第一篇 (Boolan)_第1张图片
    六大部件关系图
  • 六大部件代码调用示例:


    C++ STL与泛型编程-第一篇 (Boolan)_第2张图片
    代码调用示例

3.3 容器-结构与分类

  • STL中容器结构分成如下几种:


    C++ STL与泛型编程-第一篇 (Boolan)_第3张图片
    结构分类

4 容器使用示例

  • 公共函数部分如下所示:


    C++ STL与泛型编程-第一篇 (Boolan)_第4张图片
    公共函数

4.1 使用容器array

array容器结构
  • array容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第5张图片
    array测试代码和结果

4.2 使用容器vector

vector容器结构
  • vector容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第6张图片
    vector测试代码

    C++ STL与泛型编程-第一篇 (Boolan)_第7张图片
    vector测试代码和结果

4.3 使用容器list

list容器结构
  • list容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第8张图片
    list测试代码和结果

4.4 使用容器forward_list

forward_list结构
  • forward_list容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第9张图片
    forward_list测试代码和结果

4.5 使用容器deque

deque结构
  • 容器deque的内存结构如下图所示:


    C++ STL与泛型编程-第一篇 (Boolan)_第10张图片
    deque内存结构
  • deque容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第11张图片
    deque测试代码和结果

4.6 使用容器stack

C++ STL与泛型编程-第一篇 (Boolan)_第12张图片
stack结构
  • stack容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第13张图片
    stack测试代码和结果

4.7 使用容器queue

C++ STL与泛型编程-第一篇 (Boolan)_第14张图片
queue结构
  • queue容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第15张图片
    queue测试代码和结果

4.8 使用容器multiset

C++ STL与泛型编程-第一篇 (Boolan)_第16张图片
multiset结构
  • multiset容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第17张图片
    multiset测试代码和结果

4.9 使用容器multimap

C++ STL与泛型编程-第一篇 (Boolan)_第18张图片
multimap结构
  • multimap容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第19张图片
    multimap测试代码和结果

4.10 使用容器unordered_multiset

C++ STL与泛型编程-第一篇 (Boolan)_第20张图片
unordered_multiset结构
  • unordered_multiset容器的相关测试代码和结果如下:
    C++ STL与泛型编程-第一篇 (Boolan)_第21张图片
    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

C++ STL与泛型编程-第一篇 (Boolan)_第22张图片
unordered_multimap结构
  • unordered_multimap容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第23张图片
    unordered_multimap测试代码和结果

4.12 使用容器set

C++ STL与泛型编程-第一篇 (Boolan)_第24张图片
set结构
  • set容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第25张图片
    set测试代码和结果

4.13 使用容器map

C++ STL与泛型编程-第一篇 (Boolan)_第26张图片
map结构
  • map容器的相关测试代码和结果如下:


    C++ STL与泛型编程-第一篇 (Boolan)_第27张图片
    map测试代码和结果

5 分配器使用示例

  • 分配器的使用如下图所示:


    C++ STL与泛型编程-第一篇 (Boolan)_第28张图片
    allocator
  • STL分配器allocator有如下几种:

    1. array_allocator
    2. mt_allocator
    3. debug_allocator
    4. pool_allocator
    5. bitmap_allocator
    6. malloc_allocator
    7. new_allocator
  • 分配器的结构和使用示例如下图所示:


    C++ STL与泛型编程-第一篇 (Boolan)_第29张图片
    分配器的结构和使用
  • 分配器的测试代码如下图所示:


    C++ STL与泛型编程-第一篇 (Boolan)_第30张图片
    分配器的测试代码

你可能感兴趣的:(C++ STL与泛型编程-第一篇 (Boolan))