
STL
文章平均质量分 53
T_W_S
这个作者很懒,什么都没留下…
展开
-
迭代器的失效
原文地址迭代器(iterator)是一个可以对其执行类似指针的操作(如:解除引用(operator*())和递增(operator++()))的对象,我们可以将它理解成为一个指针。但它又不是我们所谓普通的指针,我们可以称之为广义指针,你可以通过sizeof(vector::iterator)来查看,所占内存并不是4个字节。 首先对于vector而言,添加和删除操作可能使容器的部分转载 2013-06-04 16:57:53 · 602 阅读 · 0 评论 -
STL:vector
vector的主要操作有:初始化+增删改1.初始化(以int为例)vector v;//size=capacity=0,通常后面加上v.reserve(n)来创建一个size=0,capacity=n的vector。vector v(20);//size=capacity=20,默认内容为0vector v(20,10);//size=capacity=20,默认内容为10.vecto原创 2013-06-04 16:56:00 · 760 阅读 · 0 评论 -
表的创建方法及特点
表按存储形式分为顺序存储表和链表,这里讨论链表的不同实现方式。通常我们对链表的访问集中在表头结点,表尾结点上,不同的创建方式对应着不同的访问方式和效率。创建链表时一般采用以下几种方式:单链表普通的单链表这种链表在插入结点时要判断head是否为空,因为当链表为空和不空时,在结尾处插入结点的代码是不同的。为了简化这种情况,可以使用带头结点的单链表带头结点的单原创 2013-06-24 22:38:11 · 878 阅读 · 0 评论 -
广义表
1.广义表的定义:表的元素不是单纯的原子元素,可以又是一个表。2.广义表的存储:广义表可以方便的使用带头结点的链表表示。除头结点外,链表中的每一个节点对应广义表的一个元素(原子或子表)。例如节点数据可以为(type,data,link),type确定了data的类型,data可能是原子数据,也可能是一个指向子表的指针。link指向表的下一个元素。原创 2013-08-09 17:11:04 · 856 阅读 · 0 评论 -
树相关
堆相关操作:这里堆是用数组存储的、同时根节点的数组下标为0.则i节点的左右子树的位置为2*i+1和2*i+2.1.调整一颗左右子树满足堆性质,只有根节点需要重新构造堆的子树//对i节点为根节点,且其左右子树以满足堆的树进构造,使得i及其子节点构成堆。n是堆的最后节点的位置(最后一位数据的数组下标)void adjustInode(int* a, int i, int n){原创 2013-08-17 15:07:22 · 644 阅读 · 0 评论 -
递归的思考
理论上的概念1.函数的主要成分是一个循环,则此种解法叫做迭代,而当函数是通过不断调用自己解决问题的,那么此种解法就叫做递归。2.递归既浪费时间,又浪费空间,所以递归的效率很低,在要求高性能、低内存的算法上递归不适用。要转换为迭代方法。3.在迭代函数中必须有程序员自己完成的工作(参数入栈,出栈,转移,返回等)在递归函数中交由系统啦实现。通过隐藏某些实现细节,用时间和空间代价减少了程序设计的工原创 2013-08-07 20:40:03 · 1115 阅读 · 0 评论 -
stl小知识点
1.string重载了[ ] 、> 、stl中的string是用数组存储的,所以其重载了操作符[ ],可以直接索引字符串的常用操作中就有字符串比较。所以其重载了 >、2.=是可以给字符串赋值的。因为stl中的string是对象,内容是可以修改的。string a="abc";//初始化a="fefef";//对a重新赋值。原创 2013-12-19 20:17:30 · 761 阅读 · 0 评论