【C++从0到1-黑马程序员】STL容器(二)

3. Deque容器

3.1 deque基本概念

功能: 双端数组,可以对头端进行插入删除操作

deque与vector区别:

  • vector对于头部的插入删除效率极低,数据量越大,效率越低
  • deque相对而言,对于头部的插入删除速度会比vector快
  • vector访问元素时的速度会比deque快

deque内部工作原理:

  • deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实的数据
  • 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间

  • deque容器的迭代器也支持随机访问

3.2 deque构造函数

函数原型:

deque v;                     // 采用模板实现类实现,默认构造函数

deque(v.begin(),v.end());    // 将v[begin(),end()]区间中元素拷贝给本身

deque(n,elem);               // 构造函数将n个elem拷贝给本身

deque(const vector &vec);    // 拷贝构造函数

3.3 deque赋值操作

deque& operator=(const deque &deq); 重载等号操作

assign( beg, end ); 将[begin,end]区间中元素赋值给本身

assign( n, elem ); 将n个elem拷贝赋值给本身

3.4 deque大小操作

deque.empty();             // 判断容器是否为空

deque.size();              // 返回容器中元素个数

deque.resize(int num);     // 重新制定容器的长度为num,若容器变长,则以默认值填充新位置;


deque.resize(int num,elem);// 重新制定容器的长度为num,若容器变长,则以elem值填充新位置;

                           // 若容器变短,则末尾超出容器长度元素被删除

deque容器没有容量概念,可以无限扩充

3.5 deque插入和删除

两端插入操作:

push_back(ele);     // 尾部插入元素ele

push_front(ele);    // 头部插入元素ele

pop_back();         // 删除最后一个元素

pop_front();        // 删除第一个元素

指定位置操作:

insert(const_iterator pos,ele);       // 在pos插入一个ele元素的拷贝,返回新数据的位置

insert(const_iterator pos,int n,ele); // 在pos插入n个ele元素的拷贝,返回新数据的位置

insert(const_iterator pos,begin,end); // 在pos位置插入[begin,end]区间数据,无返回值

erase(const_iterator pos);            // 删除pos位置数据,返回下一个数据位置

erase(const_iterator start,const_iterator end); // 删除[begin,end]区间数据,返回下一个数据位置

clear();                              // 删除容器中所有元素

3.6 deque数据存储

at(int index); // 返回索引idx所指的数据

operator[];    // 返回索引idx所指的数据

front();       // 返回容器最后第一个数据元素

back();      // 返回容器中最后一个数据元素

3.7 deque排序操作

sort(iterator beg,iterator end); // 对beg和end区间内元素进行排序

默认排序规则为升序,对于支持随机访问的迭代器的容器,都可以利用sort算法直接对其进行排序

4. Stack容器

4.1 stack基本概念

stack是一种先进后出(First In Last Out,FILO)的数据结构,只有一个出口。

栈不允许遍历行为,只有栈顶元素才能被访问。

4.2 stack常用接口

构造函数;

stack stk;                 // stack采用模板类实现,stack默认构造行驶

stack(const stack &stk);   // 拷贝构造函数

赋值操作:

stack& operator=(const stack &stk);    

数据存取:

push(elem);   // 向栈顶添加元素

pop();        // 从栈顶移除第一个元素

top();        // 返回栈顶元素

大小操作:

empty(); // 判断栈是否为空

size();  // 返回栈的大小

5. Queue容器

5.1 queue基本概念

Queue是一种先进先出(First In First Out.FIFO)的数据结构,它有两个出口。

  • 队列容器允许从一端新增元素,从另一端移除元素
  • 队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为
  • 队列中进数据称为---入队push
  • 队列中出数据称为---出队pop

5.2 queue常用接口

构造函数;

queue que;                 // queue采用模板类实现,queue默认构造行驶

queue(const queue &que);   // 拷贝构造函数

赋值操作:

queue& operator=(const queue &que);

数据存取:

push(elem); // 向栈顶添加元素

pop();      // 从栈顶移除第一个元素

front();    // 返回第一个元素

back();     // 返回最后一个元素

大小操作:

empty();    // 判断队列是否为空

size();     // 返回栈的大小

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值