C++ Standard Library vs Standard Template Library

  • C++ Standard Library             C++ 标准库
  • Standard Template Library       STL,标准模版库

C++ Standard Library


标准库以头文件(header files)形式呈现

  1. 旧式 C 头文件(带 .h 后缀)
    • 示例:include<stdio.h>, include<stdlib.h>
    • 不在 std 命名空间中,可以直接使用 printf() 等函数
    • 仍然可用
  2. 新式 C++ 头文件(无 .h 后缀)
    • 示例:#include <vector>, #include <iostream>, #include <string>
    • 封装于命名空间 std
  3. 新式 C 头文件(无 .h,以 c 开头)
    • 示例:#include <cstdio>, #include <cstdlib>, #include <cstring>
    • 这些头文件是从 C 标准库衍生而来的 C++ 版本
    • 同样封装在 std 命名空间中
类型 示例 是否在 std 命名空间中
新式 C++ <vector>, <string>
新式 C <cstdio>, <cstdlib>
旧式 C <stdio.h>, <stdlib.h>

Standard Template Library


STL六大部件(Components) 六大部件
容器(Containers) 容器是STL中用于存储数据的结构,是数据的载体,它们封装了数据存储的方式。
分配器(Allocators) 分配置器是STL中负责内存分配与释放的组件,是容器在内部进行元素存储的机制。
算法(Algorithms) STL 提供了丰富的通用算法,可以对容器中的元素进行处理,如查找、排序、替换等。
迭代器(Iterators) 迭代器是STL的胶水组件,连接算法与容器。它提供类似指针的机制,使算法可以以统一方式遍历不同类型的容器。
适配器(Adapters) 适配器是一种包装器组件,用于改变容器、迭代器或函数对象的行为或接口,增强其功能。
仿函数(Functors) 仿函数是重载了 () 运算符的类或结构体对象,可以像函数一样调用,用于替代函数指针,提升效率和灵活性。(行为像函数的对象)

六大部件的关系

六大部件的关系

容器——结构与分类

  • Sequence Containers

    sequecnt containers

  • Associative Containers

    Set/Multiset Map/Multimap
    set/multiset map/multimap
  • Unordered Containers

    unordered_set/unordered_multiset unorderdc_map/unordered_multimap
    unordered unordered

容器测试代码