网站首页 > 技术教程 正文
首先来了解什么是 STL,以及学习 STL 有什么用?
STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。
STL 最初由惠普实验室开发,于 1998 年被定为国际标准,正式成为 C++ 程序库的重要组成部分。值得一提的是,如今 STL 已完全被内置到支持 C++ 的编译器中,无需额外安装,这可能也是 STL 被广泛使用的原因之一。
STL 就位于各个 C++ 的头文件中,即它并非以二进制代码的形式提供,而是以源代码的形式提供。
从根本上说,STL 是一些容器、算法和其他一些组件的集合,所有容器和算法都是总结了几十年来算法和数据结构的研究成果,汇集了许多计算机专家学者经验的基础上实现的,因此可以说,STL 基本上达到了各种存储方法和相关算法的高度优化。
注意,这里提到的容器,本质上就是封装有数据结构的模板类,例如 list、vector、set、map 等,有关这些容器的具体用法,后续章节会做详细介绍。
学STL能干什么?
为了让读者清楚地了解 STL 是什么,使用 STL 编程有哪些优势,这里举一个使用 STL 的例子。
以 C++ 定义数组的操作为例,在 C++ 中如果定义一个数组,可以采用如下方式:
int a[n];
这种定义数组的方法需要事先确定好数组的长度,即 n 必须为常量,这意味着,如果在实际应用中无法确定数组长度,则一般会将数组长度设为可能的最大值,但这极有可能导致存储空间的浪费。
所以除此之外,还可以采用在堆空间中动态申请内存的方法,此时长度可以是变量:
int *p = new int[n];
这种定义方式可根据变量 n 动态申请内存,不会出现存储空间浪费的问题。但是,如果程序执行过程中出现空间不足的情况时,则需要加大存储空间,此时需要进行如下操作:
新申请一个较大的内存空间,即执行 int * temp = new int[m];
将原内存空间的数据全部复制到新申请的内存空间中,即执行 memecpy(temp, p, sizeof(int)*n);
将原来的堆空间释放,即执行 delete [] p; p = temp;
————————————
而完成相同的操作,如果采用 STL 标准库,则会简单很多,因为大多数操作细节将不需要程序员关心。下面是使用向量模板类 vector 实现以上功能的示例:
vector <int> a; //定义 a 数组,当前数组长度为 0,但和普通数组不同的是,此数组 a 可以根据存储数据的数量自动变长。
//向数组 a 中添加 10 个元素
for (int i = 0; i < 10 ; i++)
a.push_back(i)
//还可以手动调整数组 a 的大小
a.resize(100);
a[90] = 100;
//还可以直接删除数组 a 中所有的元素,此时 a 的长度变为 0
a.clear();
//重新调整 a 的大小为 20,并存储 20 个 -1 元素。
a.resize(20, -1)
注意,初学者只需结合注释,大概了解代码功能即可,有关代码中涉及到具体知识,后续会做详细介绍。
对比以上两种使用数组的方式不难看出,使用 STL 可以更加方便灵活地处理数据。所以,大家只需要系统地学习 STL,便可以集中精力去实现程序的功能,而无需再纠结某些细节如何用代码实现。
不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~
【值得关注】我!
猜你喜欢
- 2024-11-13 找不到合适的PPT模板?推荐三款模板素材库给你
- 2024-11-13 高级感轻松get!超丰富的音乐相册模板库记得收藏!
- 2024-11-13 【C++泛型编程】(二)标准模板库 STL
- 2024-11-13 属于你的PPT定制级模板库:500页×20种配色!
- 2024-11-13 新手项目经理必备的142张项目管理文档模版库
- 2024-11-13 DevExpress 模板库v21.1 - 支持.NET Core
- 2024-11-13 全球最大的H5网站模板库 h5模板网站 免费下载
- 2024-11-13 好的PPT模板,一份就够了!(限时赠送)
- 2024-11-13 一定要收藏的17个Recat开源模版库
- 2024-11-13 完美支持Vue3,一个自带管理模板的Vue3开源组件库——vuestic
你 发表评论:
欢迎- 05-24初学电脑的几个误区,这几个方法可能能帮助到你
- 05-2410 分钟入门计算机基础
- 05-240 基础学电脑,从哪儿开始,跟着我一步步走
- 05-24电脑怎么入门?这6条基本操作知识,帮助你快速轻松入门
- 05-24电脑基础知识,硬件故障的诊断步骤
- 05-245分钟认识电脑各个部件及作用,出现问题排查有方向
- 05-24电脑DIY装机 必备的基础知识(详细图文)
- 05-24不知道现在的学生会不会学习电脑的基本操作?
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)