STL
塞外听雪
当歌曲传说都已经缄默的时候,只有代码在说话
展开
-
STL (概述、三大组件)
1. STL概论长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,让程序员的心血不止于随时间的迁移,人事异动而烟消云散,从函数(functions),类别(classes),函数库(function libraries),类别库(class libraries)、各种组件,从模块化设计,到面向对象(object oriented ),为的就是复用性...原创 2019-08-24 22:36:34 · 1233 阅读 · 0 评论 -
STL(常用排序,拷贝,替换算法)
4.5 常用排序算法 /* merge算法 容器元素合并,并存储到另一容器中 @param beg1 容器1开始迭代器 @param end1 容器1结束迭代器 @param beg2 容器2开始迭代器 @param end2 容器2结束迭代器 @param dest 目标容器开始迭代器...原创 2019-08-25 15:53:48 · 175 阅读 · 0 评论 -
STL(常用遍历,查找算法)
4.2 算法概述算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等...<numeric>体积很小,只包括在几个序列容器上进行的简单运算的模板函数.<...原创 2019-08-25 15:50:43 · 799 阅读 · 0 评论 -
STL(内建函数对象,函数对象适配器 )
4.3 内建函数对象STL内建了一些函数对象。分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数。这些仿函数所产生的对象,用法和一般函数完全相同,当然我们还可以产生无名的临时对象来履行函数功能。使用内建函数对象,需要引入头文件 #include<functional>。6个算数类函数对象,除了negate是一元运算,其他都是二元运算。 template&l...原创 2019-08-25 15:47:42 · 318 阅读 · 1 评论 -
STL(STL容器的使用时机,函数对象,谓词)
3.9 STL容器使用时机 vector deque list set multiset map multimap 典型内存结构 单端数组 双端数组 ...原创 2019-08-25 15:44:17 · 205 阅读 · 0 评论 -
STL(map/multimap容器)
3.8 map/multimap容器3.8.1 map/multimap基本概念Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。我们可以通过map的迭代器改变map的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值将...原创 2019-08-24 23:01:07 · 377 阅读 · 0 评论 -
STL(pair 对组容器)
3.7.3 对组(pair)对组(pair)将一对值组合成一个值,这一对值可以具有不同的数据类型,两个值可以分别用pair的两个公有属性first和second访问。类模板:template <class T1, class T2> struct pair.如何创建对组? //第一种方法创建一个对组 pair<string, int> pair...原创 2019-08-24 22:58:40 · 210 阅读 · 0 评论 -
STL(set/multiset容器)
3.7 set/multiset容器3.7.1 set/multiset容器基本概念3.7.1.1 set容器基本概念Set的特性是。所有元素都会根据元素的键值自动被排序。Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。Set不允许两个元素有相同的键值。我们可以通过set的迭代器改变set元素的值吗?不行,因为set元素值就是其键值,关系到set元素...原创 2019-08-24 22:56:56 · 186 阅读 · 0 评论 -
STL(list容器)
3.6 list容器3.6.1 list容器基本概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,list就显得负责许多,它的好处是每次...原创 2019-08-24 22:52:57 · 707 阅读 · 0 评论 -
STL(queue容器)
3.5 queue容器3.5.1 queue容器基本概念Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。3.5.2 queue没有迭代器Queue所有元素的进出都必须符合”先进先出”的条件,只有queue的顶端元素,才有机会被外界取用。Queue不...原创 2019-08-24 22:50:51 · 164 阅读 · 0 评论 -
STL(stack 栈容器)
3.4 stack容器3.4.1 stack容器基本概念stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。有元素推入栈的操作称为:push,将元素推出stack的操作称为p...原创 2019-08-24 22:48:21 · 310 阅读 · 0 评论 -
STL( deque容器 )
3.3 deque容器3.3.1 deque容器基本概念Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间对头端进行...原创 2019-08-24 22:45:30 · 131 阅读 · 0 评论 -
STL(vector容器)
3.2 vector容器3.2.1 vector容器基本概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以...原创 2019-08-24 22:42:50 · 130 阅读 · 0 评论 -
STL (string 容器)
3. 常用容器3.1 string容器3.1.1 string容器基本概念C风格字符串(以空字符结尾的字符数组)太过复杂难于掌握,不适合大程序的开发,所以C++标准库定义了一种string类,定义在头文件<string>。String和c风格字符串对比:Char*是一个指针,String是一个类string封装了char*,管理这个字符串,是一个char*型的容器...原创 2019-08-24 22:40:15 · 172 阅读 · 0 评论 -
STL(常用算术生成,集合算法)
4.7 常用算数生成算法 /* accumulate算法 计算容器元素累计总和 @param beg 容器开始迭代器 @param end 容器结束迭代器 @param value累加值 */ accumulate(iterator beg, iterator end, value) /* ...原创 2019-08-25 15:56:15 · 321 阅读 · 0 评论