建设网站需要什么知识,更改wordpress最大上传文件大小,做网站的工作轻松吗,湘潭专业sem优化C STL学习记录一. 什么是STL1.1 STL的诞生1.2 STL基本概念1.3 STL的六大组件1.4 STL中的容器、算法、迭代器1.5 容器、算法、迭代器实践一. 什么是STL 1.1 STL的诞生
STL建立的目的就是为了解决软件界复用性的需求。C的面向对象和泛型编程思想#xff0c;目的就是为了复用性的…
C STL学习记录一. 什么是STL1.1 STL的诞生1.2 STL基本概念1.3 STL的六大组件1.4 STL中的容器、算法、迭代器1.5 容器、算法、迭代器实践一. 什么是STL 1.1 STL的诞生
STL建立的目的就是为了解决软件界复用性的需求。C的面向对象和泛型编程思想目的就是为了复用性的提升。大多数情况下数据结构和算法都未能有一套标准导致被迫从事大量重复工作为了建立数据结构和算法的一套标准诞生了STL
1.2 STL基本概念
STL Standard Template Library标准模板库STL从广义上分为容器(container) 算法(algorithm) 迭代器(iterator)容器和算法之间通过迭代器无缝链接。STL几乎所有代码都采用了模板类或者模板函数
1.3 STL的六大组件
STL大体分为六大组件分别是容器、算法、迭代器、仿函数、适配器配接器、空间配置器。前四个为主要开发常用。
容器各种数据结构如vector、list、deque、set、map等用来存放数据。算法各种常用的算法、如sort、find、copy、for_each等。迭代器充当容器和算法之间的胶合剂仿函数行为类似函数可作为算法的某种策略适配器一种用来修饰容器或者仿函数或迭代器接口的东西。空间配置器负责空间的配置与管理
1.4 STL中的容器、算法、迭代器
容器 STL容器就是将运用最广泛的一些数据结构实现出来。 最常用的数据结构数组链表树栈队列集合映射表等。 这些容器分为序列式容器和关联式容器两种
序列式容器容器强调值的排序序列式容器中的每个元素均具有固定的位置。关联式容器二叉树结构各元素之间么有严格的物理上的顺序关系。
算法 有限的步骤解决逻辑或数学上的问题就是算法Algorithm 算法分为质变算法和非质变算法
质变算法是指运算过程中会更改区间内的元素内容例如拷贝、替换、删除等非质变算法是指运算过程中不会更改区间内的元素内容例如查找、计数、遍历、寻找极值等
迭代器 提供一种方法能依序寻访某个容器所含的各个元素而又无需暴露该容器的内部表示方式。 每个容器都有自己的专属迭代器 迭代器使用非常类似于指针、初学阶段我们可以先将迭代器理解为指针。
迭代器种类
输入迭代器:对数据的只读访问 、、输出迭代器对数据的只写访问 前向迭代器读写操作并能向前推进迭代器 、、双向迭代器读写操作并能向前和向后操作 、–随机访问迭代器读写操作可以以跳跃的方式访问任意数据功能最强的迭代器 、–、[n]、-n、、、、
常用的容器中迭代器种类为双向迭代器、和随机访问迭代器。
1.5 容器、算法、迭代器实践
容器vector | 算法for_each | 迭代器vectorint::iterator
int main() {//创建一个vector容器vectorint v;//向容器插入数据v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);//通过迭代器访问容器中的数据vectorint::iterator iteratorBegin v.begin();vectorint::iterator iteratorEnd v.end();//第一种遍历方式while (iteratorBegin ! iteratorEnd) {cout *iteratorBegin endl;iteratorBegin;}//第二种遍历方式for (vectorint::iterator i v.begin(); i v.end(); i) {cout *i endl;}//第三种算法遍历for_each(v.begin(), v.end(), [] (int val){cout val endl;});return 1;
}