IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 关于C++STL简介 -> 正文阅读

[C++知识库]关于C++STL简介

不会STL,就别说你学会了C++!
                                           ------沃布至 · 道誰硕德

STL

1什么是STL

STL全称(standard template libaray),:是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2. STL的主要组成部分(六大组件

在这里插入图片描述
①:容器

容器就是用来存放数据的类模板。(可变长数组、链表、平衡二叉树等数据结构在 STL 中都被实现为容器。
容器中可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实际插入的是对象或变量的一个复制品。

②:迭代器
迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。
简单来说,迭代器就是用来遍历容器的。

对于迭代器,我们还有一个在我们以后的学习中经常会遇得到的问题“ 迭代器失效”,这个问题我就不放在这篇博客中了,我会在后面关于vector的博客中详细谈谈这个问题。

③:算法
使用C++标准库的算法,需包含头文件< algorithm >。
STL算法用于处理一个或多个iterator区间,第一个区间通常以起点和终点表示,其他区间则多数情况下只需提供起点足矣,其终点可以根据第一区间的元素数量推导出来。调用者需保证区间的有效性。STL算法命名时,引入了两种特殊的后缀:
在这里插入图片描述
STL中的算法总共分为下列几大类:

  • 非更易型算法(nomodifying algorithm)

  • 更易型算法(modifying algorithm)

  • 移除型算法(removing algorithm)

  • 变序型算法(mutating algorithm)

  • 排序算法(sorting algorithm)

  • 已排序区间算法(sorted-range algorithm)

  • 数值算法(numeric algorithm)

④:适配器

配适器又叫容量配适器,容器适配器是一个封装了序列容器的类模板,它在一般序列容器的基础上提供了一些不同的功能。之所以称作适配器类,是因为它可以通过适配容器现有的接口来提供不同的功能。

⑤:仿函数

仿函数的主要功能是为了搭配STL算法使用,单独使用仿函数的情况比较少。
仿函数(functors)在C++标准中采用的名称是函数对象(function objects)。仿函数主要用于STL中的算法中,虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,也不能满足软件积木的要求–函数指针无法和STL其他组件搭配,产生更灵活变化。仿函数本质就是类重载了一个operator(),创建一个行为类似函数的对象。

⑥:空间配置器:
空间配置器的存才就是为了提高内存的使用效和使用效率。
为了提高这两个效率,空间配置器分为了第一级配置器与第二级配置器。

  • 一级空间配置器

一级空间配置器只是简单的封装了一下malloc和free实现的。在allocate函数中如果通过malloc申请内存失败(失败返回0)就改用oom_malloc(size_t n)函数尝试分配内存,如果oom发现没有指定new-handler函数的话,那就直接调用__THROW_BAD_ALLOC,丢出bad_alloc或是直接通过exit(1)中止程序。

  • 二级空间配置器
    二级空间配置器为了避免小块内存带来的碎片化问题,使用内存池+free_list的形式管理内存。第二级空间配置器的代码如下所示。若申请的内存大于128个字节则直接调用一级空间配置器,如果不大于就将任何小额区块的内存__n上调至8的倍数(即使你请求1个字节,那也会申请8个字节)。这是因为在二级空间配置器中内存是通过free_list管理的。

在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 22:56:03  更:2021-07-22 22:56:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 6:13:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码