stl:deque

STL :deque的使用方法

作为一种依靠链表实现的容器,deque(读音是不是和‘dick’相同)是一种能够实现元素的快速插入和随机访问的容器类函数。它和vector基本相同(在用法上),但是一个vector没有的==push_front()==造就了它们决定性的不同。

deque的成员函数。

deque<elem> a;创建一个空的deque
deque<Elem> a1(a2) 复制一个deque。
deque<Elem> a(n) 创建一个deque,含有n个数据,数据均已缺省构造产生。
deque<Elem> a(n, elem) 创建一个含有n个elem拷贝的deque
deque<Elem> a(beg,end) 创建一个以[beg;end)区间的deque
a.~deque<Elem>() 销毁所有数据,释放内存

附上代码~

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<deque>
 using namespace std; 
 
deque <int> q;  
deque <int>::iterator it; 
 
int main()
{
 q.push_back(1);
 q.push_front(2);
 q.push_back(3);
 
 for(int i=0;i<3;i++)  //deque也可以提供数组氏的访问和赋值 
  printf("%-4d",q[i]);
 putchar('\n');
 
 it=q.end();    //插入删除操作也和vector一样 
 it=q.insert(it,4);
 q.push_back(5); 
 
 it=q.begin() ;
 it=q.insert(it,0);
 q.push_front(-1); 
   
 for(int i=0;i<7;i++)  
  printf("%-4d",q[i]);
 putchar('\n'); 
 
 return 0;
}

这里还有很多其他的成员函数,用法都和其他的STL函数差不多,就不一一列举了

注意,使用==c.clear()==函数移除元素的时候,并不会清空内存,可能导致内存泄漏,要彻底移除的话需要使用 a.~deque《elem》()

c.assign(beg,end)[beg; end)区间中的数据赋值给c。
c.assign(n,elem) 将n个elem的拷贝赋值给c。
c. at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。
c.back() 返回容器c的最后一个元素的引用。如果c为空,则该操作未定义。
c.begin() 传回迭代器中的第一个数据地址。
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一位置。
c.erase(pos) 删除pos位置的数据,传回下一个数据的位置。
c.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。
c.front() 返回容器c的第一个元素的引用。如果c为空,则该操作为空。
get_allocator 使用构造函数返回一个拷贝。
c.insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置
c.insert(pos,n,elem) 在pos位置插入>n个elem数据。无返回值
c.insert(pos,beg,end) 在pos位置插入在[beg,end)区间的数据。无返回值
c.max_size() 返回容器c可容纳的最多元素个数。
c.pop_back() 删除最后一个数据。
c.pop_front() 删除头部数据。
c.push_back(elem) 在尾部加入一个数据。
c.push_front(elem) 在头部插入一个数据。
c.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素。
c.rend() 返回一个逆序迭代器,它指向容器c的第一个元素的前一个位置。
c.resize(num) 重新指定队列的长度。
c.size() 返回容器中实际数据的个数。
c.swap(c2) 交换容器c和c2中的所有元素。
swap(c1,c2) 交换容器c1和c2中的所有元素,和上一方法相似。

看完了deque的使用方法,下面就来趁热打铁吧

队列

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值