浙江省网站备案注销申请表,请问网络维护有前途吗,ui设计需要学哪些内容,黄页推广网页一、概念
STL#xff0c;英文全称 standard template library#xff0c;中文可译为标准模板库或者泛型库#xff0c;其包含有大量的模板类和模板函数#xff0c;是 C 提供的一个基础模板的集合#xff0c;用于完成诸如输入/输出、数学计算等功能。
STL 最初由惠普实验室…一、概念
STL英文全称 standard template library中文可译为标准模板库或者泛型库其包含有大量的模板类和模板函数是 C 提供的一个基础模板的集合用于完成诸如输入/输出、数学计算等功能。
STL 最初由惠普实验室开发于 1998 年被定为国际标准正式成为 C 程序库的重要组成部分。值得一提的是如今 STL 已完全被内置到支持 C 的编译器中无需额外安装这可能也是 STL 被广泛使用的原因之一。 STL 就位于各个 C 的头文件中即它并非以二进制代码的形式提供而是以源代码的形式提供。 从根本上说STL 是一些容器、算法和其他一些组件的集合所有容器和算法都是总结了几十年来算法和数据结构的研究成果汇集了许多计算机专家学者经验的基础上实现的因此可以说STL 基本上达到了各种存储方法和相关算法的高度优化。
二、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 可以更加方便灵活地处理数据。