做国珍新时代 网站,网站开发的设计与实现,简单的中国建筑招聘网,阆中网站建设01hl一、概念
STL#xff1a;标准模板库#xff0c;Standard Template Library的缩写。是c编程语言中重要部分#xff0c;提供了一组通用模板#xff0c;实现常用的数据结构和算法。是泛型编程思想的重要体现#xff0c;进一步提升了复用性。
STL分为六大组件#xff1a;容…一、概念
STL标准模板库Standard Template Library的缩写。是c编程语言中重要部分提供了一组通用模板实现常用的数据结构和算法。是泛型编程思想的重要体现进一步提升了复用性。
STL分为六大组件容器、算法、迭代器、函数对象、适配器、空间分配器。
二、容器
置物之所也。简单理解就是我们程序中组织存放数据的盒子。有的盒子拿到后大小就固定了比如array数组或者有一种盒子可以自己调整大小比如vector大小可变的动态数组也可能是对数据的顺序有严格要求或者对数据的存取顺序有严格要求等功能。这些盒子允许你组织存放、操作任何类型的数据且可以根据具体需求和性能要求选择合适的容器。容器可以分为三种
一、序列容器
强调值的排序序列式容器中的每个元素均有固定的位置。 包括array数组、vector向量、deque双端队列、list双向列表、forward_list单向链表。
二、关联容器
在关联容器中按照预定义的顺序插入元素例如按升序排序。 关联容器有map和set两种容器底层均以红黑树结构实现存储的数据有一个键值的映射通过键值进行自动排序。也有无序版本的unordered_map和unordered_set。
三、容器适配器:
容器适配器是序列容器或关联容器的变体为了简单明确起见它对容器接口进行限制。 容器适配器不支持迭代器。包含queue队列首出尾进和stack栈顶进顶出。
三、算法algorithm
问题之解法也。有限的步骤解决逻辑或者数学上的问题这一学科叫做算法algorithm使用STL提供的算法需要先#includealgorithm算法分为质变算法和非质变算法。
质变算法是指运算过程中会更改区间内的元素的内容。例如拷贝替换删除等等
非质变算法是指运算过程中不会更改区间内的元素内容例如查找、计数、遍历、寻找极值等等
特定的算法只能有特定的容器相互配合使用实现高效的运算。
四、迭代器iterator
迭代器是容器和算法之间的融合剂是一种用于遍历容器中元素的对象所有容器必须通过迭代器进行数据操作实现删插增改或排序等目的。简单理解迭代器就是容器中的一个抓手能够根据要求抓取容器内的数据进行多种操作。每个容器有自己的专属迭代器。
迭代器的使用与指针非常类似初学者的我们可以先理解为指针。
五、实例
容器使用需要先包含容器头文件例如要使用vector容器就需要先includevector
#includeiostream
using namespace std;
#includevector
#includealgorithmvoid myprint(const int value) {cout value endl;
}void test() {vectorint v;v.push_back(2);v.push_back(5);v.push_back(1);v.push_back(7);v.push_back(4);/*方法一初始化两个迭代器*///itbegin指向第一个元素vectorint::iterator itbegin v.begin();//itend指向最后一个元素的后面一个位置vectorint::iterator itend v.end();while (itbegin ! itend) {cout *itbegin endl;itbegin;}/*方法二*/for (vectorint::iterator it v.begin(); it ! v.end(); it) {cout *it endl;}/*方法三用STL提供的遍历算法for_each,需要先包含算法头文件algorithm.参数1和参数2指定遍历区间参数3利用回调函数的指针实现输出*/for_each(v.begin(), v.end(), myprint);
}
int main(int argc, char const *argv[]) {test();return 0;
}