STL之deque
来源:互联网 发布:apache tiles3 教程 编辑:程序博客网 时间:2024/05/16 13:48
deque是双向队列
头文件是
#include <deque>
1.deque的基础
构造函数
template< class T, class Allocator = allocator>class deque
T是存储数据类型,Allocator指定分配器(默认是标准分配器)。
deque的构造函数:
explicit deque(const Allocator &a = Allocator());
构造空的deque
explicit deque(size_type num,const T &val = T(),const Allocator &a=allocator());
构造一个有num个元素,值为val的deque
deque(const deque< T, Allocator> &ob);
构造包含有和ob一样元素的deque,这是deque的拷贝构造函数
template < class InIter>deque(InIter start InIter end,const Allocator &a=Allocator());
构造包含由start和end指定范围元素的deque。
其他
deque定义了赋值运算符和比较运算符:
==,<,<=,!=,>,>=
deque支持随机访问迭代器,也支持通过[]方式像数组一样进行索引访问deque对象。
成员函数
MemberDescriptiontemplate void assign(InIter start,InIter end)把由start和end之间给定序列赋值给dequevoid assign(size_type num,const T&val)将val中的num个元素赋值给dequereference at(size_type i);const_reference at(size_type i)const返回由i指定的指定元素的引用reference back();
const_reference back() const返回deque中最后元素的引用iterator begin();
const_iterator begin() const返回deque中指向第一个元素的迭代器void clear()删除deque中的所有元素bool empty() const如果调用的deque为空返回true,否则返回falseconst_iterator end() const;
iterator end()返回deque中结束位置的迭代器iterator erase(iterator i)删除由i指定的元素,返回的迭代器起始位置是被删除元素之后的第一个元素位置iterator erase(iterator start,iterator end)删除由start和end指定范围内的元素。返回的迭代器起始位置是最后被删除元素在deque中之后的第一个元素的位置reference front();
const_reference front() const返回deque中第一个元素的引用allocator_type get_allocator()const返回deque的分配器iterator insert(iterator i, const T &val)在由i指定元素之前立即插入valvoid insert(iterator i,size_type num,const T &val)在元素i之前插入num个valtemplate void insert(iterator i,InIter start,InIter end);在元素i之前插入由start和end指定的序列size_type max_size() const返回deque能保存的最大元素个数reference operator[](size_type i);
const_reference operator[](size_type i) const返回第i个元素的引用void pop_back()删除deque中的最后一个元素void pop_front()删除deque中的第一个元素void push_back(const T &val)将值为val的元素加入到deque尾部void push_front(const T &val)将值为val的元素加入到deque头部reverse_iterator rbegin();
const_reverse_iterator rbegin() const;返回反向迭代器指向deque尾部reverse_iterator rend();
const_reverse_iterator rend() const返回反向迭代器指向deque头部void resize(size_type num, T val = T())该表deque的大小为num。如果deque必须要增加长度,则由val指定的值作为新元素被加到deque的尾部size_type size() const返回deque中当前元素个数void swap(deque
具体类型
size_type整数类型difference_type能够区分两个地址不同的整数类型reference元素的引用(T&)const_reference元素的常量引用(const T&)iterator迭代器const_iteratorconst迭代器reverse_iterator反向迭代器const_reverse_iteratorconst反向迭代器value_type存储在容器中值的类型(T)allocator_type分配器类型pointer指向元素的指针const_pointer指向元素的常量指针(const T*)2.Example
deque<char> q1;char str[] = "Using a deque.";int i =0;for (i=0;str[i];i++){ q1.push_back(str[i]); q1.push_front(str[i]);}cout<<"Original q1:\n";for (i=0;i<q1.size();i++){ cout<<q1[i];}cout<<"\n\n";//remove backward stringfor (i=0;i<strlen(str);i++){ q1.pop_front();}cout<<"q1 after popping front:\n";for (i=0;i<q1.size();i++){ cout<<q1[i];}cout<<"\n\n";//construct a copy of q1deque<char> q2(q1);cout<<"q2 original contents:\n";for (i=0;i<q2.size();i++){ cout<<q2[i];}cout<<"\n\n";//transpose q2for (i=0;i<q2.size();i++){ q2[i] = q2[i] + 1;}cout<<"q2 transposed contents:\n";for (i=0;i<q2.size();i++){ cout<<q2[i];}cout<<"\n\n";//get iterator to first occurrence of 'a'deque<char>::iterator p = q1.begin();while (p!=q1.end()){ if (*p == 'a') { break; } p++;}//insert transposed q2 into q1q1.insert(p,q2.begin(),q2.end());cout<<"q1 after insertion:\n";for (i=0;i<q1.size();i++){ cout<<q1[i];}cout<<"\n\n";
0 0
- STL之Deque
- STL容器之deque
- STL容器之 deque
- STL容器之deque
- STL容器之deque
- STL容器之deque
- stl库之deque
- STL之deque
- STL之deque
- STL 之 deque
- STL学习之deque
- STL之deque
- STL之 deque
- STL之八 deque
- STL容器之Deque
- STL容器之deque
- STL学习之deque
- stl之deque
- 个人界面 < 头像 > 图像添加,其他颜色的边框(内外都可以)
- 绿色版mysql安装过程
- NDK笔记
- KNN算法在保险业精准营销中的应用
- Office Word 是如何根据字体的 OS/2 表等信息计算「单倍行距」的
- STL之deque
- c# BarTender打印
- springMVC 处理异常
- Mac使用zsh导致maven命令无效的解决方案
- 移动端常见的一些兼容性问题
- java设计模式之装饰模式
- mac下添加安卓开发调试设备
- Office在线预览及PDF在线预览的实现方式大集合
- 游标的使用