C++ Standard Library
architecure & sources
C
标准库 -> 一个一个单一的函数function
-> 彼此几乎无关联
c++
标准库 -> 六个部分 -> 彼此之间有紧密的关联
c++
标准库主要是用模板做出来的
泛型编程(Generic Programming
)
使用模板作为主要工具来编写程序 -> templates
模板的意义和运用
与面向对象编程(oop -> Object Oriented Programming
)的根本差异
-
level 0
: 使用c++STL
-
level 1
: 认识c++STL
-> 使用部件的时候-
清楚他们在内存当中的布局.以及如何扩展的
-
当元素增加的时候如何变化的
-
进而判断用什么部件、容器、算法
-
-
level 2
: 良好使用c++STL
-> 对c++STL
有一个清楚的认识和了解之后才能够做到良好的使用 -
level 3
: 扩充c++STL
-> 极少数
c++ Standard Library
&& c++ Standard Template Library
c++ Standard Library
-
以
headr files
的形式出现 -> 不是编译好的,可以看到source code
-
c++
标准库头文件不带.h
名 ->#include <vector>
-
c++STL
是指六大部件.加上其他的东西才是c++
标准库
在头文件内在进行一层封装就是namespace
-> 头文件内又打了一个包
c++STL
STL
六大部件(components
)
-
容器(
Containers
) -> 解决掉内存分配的问题 ->template class
-> 数据在容器里面 -> 每一种容器对应一个头文件 -
分配器(
Allocators
) -> 支持容器解决内存的问题 -
算法(
Algorithms
) -> 容器下的模板函数 -> 不在容器的class
里面 -> 模板编程 -
迭代器(
Iterators
) -> 数据和算法(操作方式)中间的桥梁称之为迭代器 -> 泛化的指针 -
适配器(
Adapters
) -> 转换容器、迭代器或者转换仿函数 -
仿函数(
Functors
) -> 两个类或者class
进行计算就可以写一些仿函数
数据结构+算法=程序
面向对象(oop
) -> 数据和处理数据的函数都放在class
里面
上述STL
使用示例代码:
容器特点
-
容器不一定是连续空间
-
begin()
指向第一个元素.end()
指向最后一个元素的下一个元素 -> 前闭后开区间 -> 所以end()
不可以解引用拿地址.因为拿不到想要的地址 -
上面两个方法返回的是泛化指针
示例代码:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-04-22 4.22JavaLinkedList特点和底层实现
2021-04-22 4.22JavaArrayList的底层实现
2021-04-22 4.22Java自定义ArrayList底层+remove方法
2021-04-22 4.22Java自定义实现ArrayList底层+数组扩容方法
2021-04-22 4.22Java自定义ArrayList底层+set/get方法和数组的边界检查
2021-04-22 4.22Java自定义实现ArrayList底层