1、vector

     空间运用的灵活性。
     实现技术——关键是对大小的控制以及重新配置时的数据移动效率。
     配置新空间、数据移动、释还旧空间
     erase(int position)先移动覆盖元素之后删除最后一个
     vector维护的是一个连续线性空间提供的是Random Access Iterators
     find(begin,end,k)如果找到k则iter指向k,如果没找打iter指向end。当在此插入元素的时候,如果插入成功返回*iter的时候的时候程序出错(内存的原因,可能是经过插入步骤之后iter指针失效,但从新遍历整个vector时是正确的,刚插入的元素也在里边)。--------不清楚为什么不失效???
     所谓的动态增加大小,并不是在原空间之后连续新空间(因为无法保证空间之后尚有可供配置的空间),对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。
     insert(position,n,x),插入点之后现有元素>=n,先把position+n----finish复制到finish之后,在吧position-----position+n复制到finish之前,之后在插入元素。插入点之后现有元素<=n,先插入n-(finish-position)个x,之后把position----finish(旧的那个,不是现在更行的finish)复制到x之后的内存,之后在开始插入其余的x。
     erase(first,last)先移动覆盖,即从last----finish到first开始往后,以后再释放内存。(局部区间的清楚操作)
2、list
     list不再能够像vector一样以普通指针作为迭代器,节点不保证在存储空间中连续存在。是一个双向链表,迭代器必须具备前移、后移的能力,所以list提供的是Bidirectional Iterators。
     插入(insert)和结合(splice)都不会造成原有的list迭代器失效。
     在insert的时候不像vector在position出插入,之后不能返回*iter,在这儿能返回*iter,不过是之前的元素,不是新插入的元素。即:插入完成后,新节点将位于哨兵迭代器所指节点的前方。
     transfer(position,first,last)--迁移操作。splice操作和reverse操作都是经过迁移操作完成的。
3、deque
     deque没有容量的概念(capacity)。因为它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并连接起来。因此deque没必要提供所谓的空间保留(reserve)功能。
     提供Random Access Iterator,但他的迭代器并不是普通的指针。
     deque是由一段段的定量连续空间构成。最大的任务,就是在这些分段的定量的连续空间上,维护其整体连续的假象,并提供随机存取的接口。避开了重新配置、复制、释放的轮回,待嫁则是复杂的迭代器架构。
     分段的线性空间,就必须有重要控制器,而为了维持整体连续的假象,数据结构的设计及迭代器前进后退等操作都颇为繁琐,deque的实现代码分量远比vector或list都多得多。
     deque采用一块所谓的map做为主控。map是一小块儿连续空间,其每个元素都指向缓冲区,可以说这个元素是指向指针的指针。
     deque具备的结构::必须能够指出分段连续空间(缓冲区)在哪里,其次必须能够判断自己是否已经处于其所在缓冲区的边缘,如果是,一旦前进或后退时就必须跳跃至下一个或上一个缓冲区。为了能够正确的跳跃,deque必须随时掌握管控中心(map)。
     deque除了维护一个先前说过的指向map的指针外,也维护start,finish两个迭代器,分别指向第一缓冲区的第一个元素和最后一个元素(的下一位置)。此外,它当然也必须记住目前的map大小。因为一旦map所提供的节点不足,就必须重新配置更大的一块儿map。
     deque的最初状态(无任何元素时)保有一个缓冲区,因此,clear()完成之后恢复初始状态,也一样要保留一个缓冲区。
     

STL序列式容器的更多相关文章

  1. STL序列式容器学习总结

    STL序列式容器学习总结 参考资料:<STL源码剖析> 参考网址: Vector: http://www.cnblogs.com/zhonghuasong/p/5975979.html L ...

  2. STL——序列式容器

    一.容器概述与分类 1. STL容器即是将运用最广的一些数据结构实现出来.常用的数据结构有array, list, tree, stack, queue, hash table, set, map…… ...

  3. 数据结构-STL序列式容器总结

    根据序列在容器中的排列特性,将常见数据结构分为:序列式容器和关联式容器. 常见序列式容器有 1.array(build-in)c++內建 2.vector 3.heap(以算法方式呈现) 4.prio ...

  4. STL源码剖析读书笔记--第四章--序列式容器

    1.什么是序列式容器?什么是关联式容器? 书上给出的解释是,序列式容器中的元素是可序的(可理解为可以按序索引,不管这个索引是像数组一样的随机索引,还是像链表一样的顺序索引),但是元素值在索引顺序的方向 ...

  5. STL源码剖析之序列式容器

    最近由于找工作需要,准备深入学习一下STL源码,我看的是侯捷所著的<STL源码剖析>.之所以看这本书主要是由于我过去曾经接触过一些台湾人,我一直觉得台湾人非常不错(这里不涉及任何政治,仅限 ...

  6. STL源码剖析——序列式容器#1 Vector

    在学完了Allocator.Iterator和Traits编程之后,我们终于可以进入STL的容器内部一探究竟了.STL的容器分为序列式容器和关联式容器,何为序列式容器呢?就是容器内的元素是可序的,但未 ...

  7. STL源码剖析:序列式容器

    前言 容器,置物之所也.就是存放数据的地方. array(数组).list(串行).tree(树).stack(堆栈).queue(队列).hash table(杂凑表).set(集合).map(映像 ...

  8. STL学习笔记(序列式容器)

    Vector Vector是一个动态数组. 1.Vector的操作函数 构造.拷贝和析构 vector<Elem> c //产生一个空vector ,其中没有任何元素 vector< ...

  9. 7.5 C++基本序列式容器

    参考:http://www.weixueyuan.net/view/6402.html 总结: vector可以理解为可以在两端插入.删除数据的数组,它提供了丰富的成员函数,用于操作数据. begin ...

随机推荐

  1. 【BZOJ 2654】tree

    Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need分别表示点数,边数和需要的白色 ...

  2. ios 保存本地数据的方法

    1. NSString *path = [[NSBundle mainBundle] pathForResource:@"文件名" ofType:@"plist" ...

  3. 微软Hololens设备 浅分析

    微软Hololens的定位是一款MR 设备(Mixed reality).MR与AR的不同我认为是MR能够将真实环境的场景信息与虚拟对象进行完美的融合,它是基于SLAM(SimultaneousLoc ...

  4. BZOJ 3173 [Tjoi2013] 最长上升子序列 解题报告

    这个题感觉比较简单,但却比较容易想残.. 我不会用树状数组求这个原排列,于是我只好用线段树...毕竟 Gromah 果弱马. 我们可以直接依次求出原排列的元素,每次找到最小并且最靠右的那个元素,假设这 ...

  5. [转载]C# 中Web.config文件的读取与写入

    asp.net2.0新添加了对web.config直接操作的功能.开发的时候有可能用到在web.config里设置配置文件,其实是可以通过程序来设置这些配置节的. asp.net2.0需要添加引用: ...

  6. hdu 3631

    最短路  执行一遍 Floyd算法    比赛的时候没有想到, 用了优化的Dijkstra  超时到死 #include <cstdio> #include <cstring> ...

  7. linux mysql为root用户初始化密码和改变root密码

    初始化密码: 由于安装MySQL完后,MySQL会自动提供一个不带密码的root用户,为了安全起见给root设置密码: #mysqladmin -u root password 123 (123为密码 ...

  8. tomcat 设置默认编码格式

    在tomcat目录下 conf文件夹下的server.xml中: <Connector port="80" protocol="HTTP/1.1"     ...

  9. http://doc.okbase.net/congcong68/archive/112508.html

    http://doc.okbase.net/congcong68/archive/112508.html

  10. 转--利用函数模板技术,写一个简单高效的 JSON 查询器

    http://www.cnblogs.com/index-html/archive/2012/07/18/js_select.html http://www.ibm.com/developerwork ...