建立网站有哪些步骤?,网站动画效果用什么程序做的,外链是什么,typecho移植wordpress归纳编程学习的感悟#xff0c; 记录奋斗路上的点滴#xff0c; 希望能帮到一样刻苦的你#xff01; 如有不足欢迎指正#xff01; 共同学习交流#xff01; #x1f30e;欢迎各位→点赞 #x1f44d; 收藏⭐ 留言#x1f4dd; 勤奋#xff0c;机会#xff0c;乐观…
归纳编程学习的感悟 记录奋斗路上的点滴 希望能帮到一样刻苦的你 如有不足欢迎指正 共同学习交流 欢迎各位→点赞 收藏⭐ 留言 勤奋机会乐观是成功的三要素
一起加油 目录 一、前言
二、STL概述
三、容器
1、向量
2列表
3、集合
4、双端队列
5、栈
6.映射
例使用向量将字符串传送到字符向量中并显示。
四、算法
五、选代器
六、共勉 一、前言 标准模板库(Standard Template LibrarySTL)是一个高效、实用的 C程序库。它被容纳于 C标准程序库中是ANSI/ISO C标准中最新的也是极具革命性的一部分。该库包含了诸多计算机科学领域里常用的基本数据结构和基本算法为广大 C程序员们提供了一个可扩展的应用框架高度体现了软件的可复用性。 二、STL概述 STL在C程序设计中的作用是提供一个可供函数调用的组件和函数库当需要时通过接口来调用STL 的目的是标准化组件用户不用重新开发它们就可以使用这些现成的组件。STL 现在是 C的一部分被内建在编译器之内。 虽然STL是一个模板库但其中也包含了许多部分。一般来说STL由如下六个部分组成。
(1)容器(Containers):用于管理数据集合包括各种数据结构比如vector、list、deque、set、map用来存放数据 从实现的角度来看STL容器是一种类模板。 (2)算法(Algorithms):定义了计算过程其包括各种算法比如sort、search、copy、erase 等 从实现的角度来看STL算法是一种函数模板。 (3)选代器(Iterators):提供了遍历容器的方法它扮演了容器与算法之间的胶合剂、即“泛型指针”。共有5种类型及其他衍生变化。 从实现角度来讲STL迭代器是一种将operator*、operator-、operator、operator--等指针相关操作予以重载的类模板。所有的 STL容器都附有自己专属的迭代器。 (4)仿函数(Functors)将函数封装在对象中供其他组件使用。行为类似函数可作为算法的某种策略。 从实现角度来看它是一种重载了 operator()的类或者类模板一般的函数指针可被视为狭义的仿函数。 (5)配接器(Adapters):一种用来修饰容器、仿函数或迭代器的接口如STL提供的queue和stack虽然看似容器其实只能算一种容器配接器因为它们底部完全借助 deque所有操作都有底层的 deque 供应。改变functor 接口的被称为function adapter改变container 接口的被称为container adapter。 (6)配置器(Allocators):负责空间配置与管理。 从实现角度来看配置器是一个实现了动态空间配置、空间管理、空间释放的类模板。 STL的代码从广义上来讲可分为三类:容器(Containers)、算法(AIgorithms)、选代器(Iterators)。几乎所有的代码都采用了模板类和模板函数的方式这相比于传统的由函数和类成的库来说提供了更好的代码重用机会。 在C标准中STL 被组织为下面的13 个头文件:algorithms、deque、functiona、iterator、vector 、list、map、memory、numeric、queue、set 、stack和utility
三、容器 STL容器允许重复利用已有的实现构造自己特定类型下的数据结构通过设置一些模板类这些模板的参数允许用户指定容器中元素的数据类型从而可以提高编程效率。 容器部分主要由头文件deque、vector、list、map、queue、set、stack组成。 1、向量 需在头文件加入:#includevector。 向量是一种 vector 容器类向量就像是盛放变长数组的容器大约所有 STL容器中有一般是基于向量的。vector 是一种动态数组是基本数组的类模板。其内部定义了很多基本操作。vector类中定义了四种构造函数。 (1)默认构造函数:其构造了一个初始长度为0的向量其调用方式如下 vectorint vl (2)带有单个整型参数的构造函数:此参数描述了向量的初始大小该构造函数还有一个可选的参数这是一个类型为T的实例描述了各个向量中各成员的初始值其调用方式如下:vectorint v2(init_size0);//如果预先定义了init_size其成员值都初始化为0
(3)复制构造函数构造一个新的向量作为已存在的向量的完全复制其调用方式如下vectorint v3(v2);
(4)含有两个常量参数的构造函数:产生初始值为一个区间的向量。区间由一个半开区间[first,last]来指定其调用方式如下:vectorint v4(first,last); 此外在实际程序中使用较多的还是向量类的成员函数其常用的成员函数包括: begin()、end()、push_back()、insert()、assign()、 front()、 back()、 erase()、 empty()、 at()、 size()。
2列表 需在头文件加入:#includelist。 列表也是容器类的一种,其控制的长度为N的序列是以一个有着N个节点的双向链表来存储的支持双向迭代器。使用列表的有时是可以在链表中插入和删除的元素或者子链表只需改变前后指针就可实现。 列表类的定义如下: typedef listT,allocatorT mycont; //使用默认模板参数可以省略第二个参数
其成员函数及作用如下所示 resize:被控序列的长度改为只容纳n个元素超出元素被删除。 clear:删除所有元素。
frontback:存取被控序列的第一个元素存取被控序列的最后一个元素。
push_back:向对象末端插人值为x的元素。push_front为对象开始处插入元素;pop_back为删除最后一个元素;pop_front 为删除第一个元素。 assign:为了将被控序列替换成由(first,last)所指定的序列。
insert:为了在迭代器it指定的元u素前插入一个元素。
erase删除it所指定的元素。
splice:将一系列的列表节点接入到一个列表中。
remove:删除所有值等于v的元素。
sort:将序列排序。
merge:将两个有序排序序列合并。
reverse:翻转整个序列。
3、集合 需在头文件加入:#includeset。 集合也是容器的一种它的特点是集合中的元素值是唯一的。在集合中所有的成员都是排列好的。如果先后往一个集合插入:23、12、0、42、123则输出该集合时为:0、12、23、42、123。
4、双端队列 需在头文件加入:#includedeque。 双端队列是一个queue容器类(队列容器)与vector类似支持随机访问和快速插入删除它在容器中某一位置上的操作所花费的线性时间与vector。不同的是deque 还支持从开始端插入数据因为其包含在开始端插入数据的函数push_front()。
5、栈 需在头文件加入:#includestack。 容器栈是一种特殊的容器其特征是后进先出即先进来的元素放在栈底最后才能取出。栈容器支持的操作有如下五种
empty:如果栈为空返回true; 否则返回false。size:返回栈中元素的个数。pop:删除但不返回栈顶元素。top:返回但不删除栈顶元素。push:放人新的栈顶元素。
6.映射 需在头文件加入:#includemap。 映射用于对数据进行快速和高效的检索。
例使用向量将字符串传送到字符向量中并显示。
#includevector //STL向量头文件
#includeiostream
using namespace std;
char *sHello world; //定义字符数组
int main()
{vectorchar vec; //声明一个字符向量vector vectorchar::iterator vi;//为字符数组定义一个字符游标iterators char *ps; //定义指针指向字符串 while(*p!\0) //初识化字符向量把数据填充到字符向量中 {vec.push_back(*p); //puch_back函数把数据放在向量的尾部 p;} for(vivec.begin();vi!vec.end();vi){cout*vi; //将向量中的数据一一显示出来 }coutendl;return 0;
} 四、算法 算法是STL的重要组成部分。STL 提供了大约 100个实现算法的模板函数用户可以通过调用算法模板完成所需的功能这样大大地提高了用户使用C进行程序设计的效率。 一般来说STL中的算法部分主要由头文件algorithms、numeric、functional组成。其中头文件algorithms由模板函数组成常见的函数涉及比较、交换、查找、排序等。
五、选代器 迭代器实际上是一种泛化指针如果一个迭代器指向了容器中的某一成员那么迭代器将可以通过自增和自减来遍历容器中的所有成员。迭代器是联系容器和算法的媒介是算法操作容器的接口。 简单来说STL提供的所有算法几乎都是通过迭代器存取元素序列进行工作的每一个容器都定义了它本身所专有的迭代器用以存取容器中的元素。在前面运用算法操作容器时就在不知不觉中使用了迭代器。 STL中的选代器主要由头文件utility、iterator、memory组成。其中utility包括了贯穿使用在 STL中的几个模板的声明iteratot头文件中提供了迭代器使用的许多方法。memory头文件中的主要部分是模板类 allocator它负责产生所有容器中的默认分配器。
六、共勉 以上就是我对C模板——(4)C泛型编程与标准模板库简介的理解希望本篇文章对你有所帮助也希望可以支持支持博主后续博主也会定期更新学习记录记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对C模板的理解请持续关注我哦