C++之容器
文章平均质量分 80
<array>
<deque>
<forward_list>
<list>
<map>
<queue>
<set>
<stack>
<unordered_map>
<unordered_set>
<vector>
攻城狮凌风
专业吹水,从不装B
展开
-
迭代器失效
1.对于序列式容器(如vector,deque),删除当前的iterator会使后面所有元素的iterator都失效。这是因为vetor,deque使用了连续分配的内存,删除一个元素导致后面所有的元素会向前移动一个位置。所以不能使用erase(iter++)的方式,还好erase方法可以返回下一个有效的iterator。 vector和list是一个顺序容器,在内存中是一块连续原创 2015-08-04 10:20:19 · 618 阅读 · 0 评论 -
总结各种容器特点
(1) vector内部数据结构:数组。随机访问每个元素,所需要的时间为常量。在末尾增加或删除元素所需时间与元素数目无关,在中间或开头增加或删除元素所需时间随元素数目呈线性变化。可动态增加或减少元素,内存管理自动完成,但程序员可以使用reserve()成员函数来管理内存。vector的迭代器在内存重新分配时将失效(它所指向的元素在该操作的前后不再相同)。当把超过capacity原创 2015-08-04 11:14:22 · 781 阅读 · 0 评论 -
C++之vector模板类
vector 称为容器模板类,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。vector 不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector 类型的每一种都指定了其保存元素的类型,如vector 和vector 都是数据类型。vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。初始化:[cpp] view p原创 2014-09-11 11:15:54 · 3747 阅读 · 0 评论 -
C++之deque
deque(包含头文件#include)由若干段连续空间串接而成,一旦有必要在deque的头部或尾端增加新的空间,便配置一段定量连续的空间,串接在deque的头部或尾端。deque的最大任务,就是在这些分段连续的空间上维护其整体连续的假象,并提供随机存取的接口。 实际上。deque内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都原创 2015-07-19 16:16:09 · 676 阅读 · 0 评论 -
C++之priority_queue
1.优先队列priority_queue 优先先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序。每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。常用的操作就是对数据排序,优先队列默认的是数据大的优先级高(即大根堆),即无论按照什么顺序push一堆数,top()总是能够弹出最大元素。原创 2015-07-19 15:42:34 · 631 阅读 · 0 评论 -
C++之string类
1.String对象的初始化 string s1; 默认构造函数,s1为空串 string s2(s1); 将s2初始化s1的一个副本。也可以带参数如s2(s1,2,4),也可以s2(&s1[2],&s1[4])。 string s3(const原创 2014-09-09 13:39:25 · 908 阅读 · 0 评论 -
C++之queue模板类
1.常用成员函数 ①size() 返回队列中元素的个数 ②empty() 如果队列空则返回真 ③back() 返回最后一个元素引用即队尾。 ④front() 返回第一个元素引用即队首。 ⑤pop() 删除第一个元素,即队首元素。不返回 ⑥push() 在末尾加入一个元素,即放置在队尾 。不返回2.结构体原创 2014-11-10 15:12:21 · 4161 阅读 · 0 评论 -
C++之Stack模板类
假设有这样一种情况:某人将一车文件交给小王。倘若小王的抽屉是空的,那么小王从车上取出最上面的文件将其放入抽屉;倘若抽屉是满的,小王从抽屉中取出最上面的文件,放入垃圾篓;倘若抽屉即不空也未满,那么小王抛硬币随机决定是否从文件车拿一份文件放入自己的抽屉,还是从自己的抽屉取出最上面的文件,放入垃圾篓。 显而易见,小王的抽屉就是Stack类。由于不知道存储文件的类型,使用模板来定义;定义如下原创 2014-07-02 10:46:14 · 3428 阅读 · 0 评论