
STL
AG_
这个作者很懒,什么都没留下…
展开
-
【STL】sting类使用
string是STL中一个常用的标准库类型。string在STL中表示可变长的字符序列,它包含在头文件#include 中。具体关于string类的介绍可以看这:https://msdn.microsoft.com/en-us/library/syxtdd4f.aspx下面来看看一些常用的方法:1、string的初始化[cpp] view p转载 2017-10-12 18:01:28 · 266 阅读 · 0 评论 -
【STL】vector源码剖析
vector与array的相同与不同:相同: vector的数据安排以及操作方式与array很相似。不同: 两者的差别主要是在空间运用的灵活上。 array是静态空间,一旦配置了就不能改变;如果要换个大的空间,就要由客户自己来完成:重新申请新空间,然后将元素都从旧地址搬移到新地址,再将原空间释放。转载 2017-10-14 13:00:19 · 322 阅读 · 0 评论 -
【STL】常用算法
常用算法函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。注意:1.函数对象(仿函数)是一个类,不是一个函数。2.函数对象(仿函数)重载了”() ”操作符使得它可以像函数一样调用。分类:假定某个类有一个重载的operato原创 2017-10-13 23:52:29 · 385 阅读 · 0 评论 -
【STL】容器调用时机
STL容器使用时机 vectordequelistsetmultisetmapmultimap典型内存结构单端数组双端数组双向链表二叉树二叉树二叉树二叉树可随机存取原创 2017-10-13 23:50:27 · 179 阅读 · 0 评论 -
【STL】map要点及使用
map/multimap容器 map/multimap基本概念Map的特性是,所有元素都会根据元素的键值自动排序。Map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。我们可以通过map的迭代器改变map的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组原创 2017-10-13 23:42:51 · 292 阅读 · 0 评论 -
【STL】set要点及使用
set/multiset容器set/multiset容器基本概念set容器基本概念Set的特性是。所有元素都会根据元素的键值自动被排序。Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。Set不允许两个元素有相同的键值。我们可以通过set的迭代器改变set元素的值吗?不行,因为set元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值原创 2017-10-13 23:36:47 · 379 阅读 · 0 评论 -
【STL】list要点及使用
list容器 list容器基本概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续线性空间,list就显得负责许多,它的好处是每次插入或者删除一个元原创 2017-10-13 23:32:38 · 252 阅读 · 0 评论 -
【STL】queue要点及使用
queue容器 queue容器基本概念Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口,queue容器允许从一端新增元素,从另一端移除元素。 queue没有迭代器Queue所有元素的进出都必须符合”先进先出”的条件,只有queue的顶端元素,才有机会被外界取用。Queue不提供遍历功能,也不提供迭代器。 q原创 2017-10-13 23:29:22 · 533 阅读 · 0 评论 -
【STL】stack要点及使用
stack容器stack容器基本概念stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之,stack不允许有遍历行为。有元素推入栈的操作称为:push,将元素推出stack的操作称为pop.stack原创 2017-10-13 23:04:10 · 338 阅读 · 0 评论 -
【STL】stl概论
STL概论长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出”可重复运用的东西”的方法,让程序员的心血不止于随时间的迁移,人事异动而烟消云散,从函数(functions),类别(classes),函数库(function libraries),类别库(class libraries)、各种组件,从模块化设计,到面向对象(object oriented ),为的就是复用性的提升原创 2017-10-13 23:26:28 · 329 阅读 · 0 评论 -
【STL】deque要点及使用
deque容器 deque容器基本概念Vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除操作,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差,无法被接受。Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间对头端进行元素的插入和删除操作。二在于原创 2017-10-13 23:01:08 · 314 阅读 · 0 评论 -
【STL】vector要点及使用
vector容器 vector容器基本概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先配置一块新的空间,然后将旧空间的数据搬往新空间,再释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。因此v原创 2017-10-13 22:56:50 · 244 阅读 · 0 评论 -
【STL】list源码剖析
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list不仅是一个双向链表,而且还是一个环状双向链表,因此迭代器必须具备前移和后移能力,所以list使用Bidirectional Ite转载 2017-10-14 13:03:15 · 298 阅读 · 0 评论