函数 |
描述 |
assign(beg,end) assign(n,elem) |
将[beg; end)区间中的数据赋值给c。 将n个elem的拷贝赋值给c。 |
c.at(idx) |
传回索引idx所指的数据,如果idx越界,抛出out_of_range。 |
back() |
传回最后一个数据,不检查这个数据是否存在。 |
begin() |
传回迭代器重的可一个数据。 |
clear() |
移除容器中所有数据。 |
deque<Elem> c deque<Elem> c1(c2) Deque<Elem> c(n) Deque<Elem> c(n, elem) Deque<Elem> c(beg,end) c.~deque<Elem>() |
创建一个空的deque。 复制一个deque。 创建一个deque,含有n个数据,数据均已缺省构造产生。 创建一个含有n个elem拷贝的deque。 创建一个以[beg;end)区间的deque。 销毁所有数据,释放内存。 |
empty() |
判断容器是否为空。 |
end() |
指向迭代器中的最后一个数据地址。 |
erase(pos) erase(beg,end) |
删除pos位置的数据,传回下一个数据的位置。 删除[beg,end)区间的数据,传回下一个数据的位置。 |
front() |
传回地一个数据。 |
get_allocator |
使用构造函数返回一个拷贝。 |
insert(pos,elem) insert(pos,n,elem) insert(pos,beg,end) |
在pos位置插入一个elem拷贝,传回新数据位置。 在pos位置插入n个elem数据。无返回值。 在pos位置插入在[beg,end)区间的数据。无返回值。 |
max_size() |
返回容器中最大数据的数量。 |
pop_back() |
删除最后一个数据。 |
pop_front() |
删除头部数据。 |
push_back(elem) |
在尾部加入一个数据。 |
push_front(elem) |
在头部插入一个数据。 |
rbegin() |
传回一个逆向队列的第一个数据。 |
rend() |
传回一个逆向队列的最后一个数据的下一个位置。 |
resize(num) |
重新指定队列的长度。 |
size() |
返回容器中实际数据的个数。 |
swap(c2) Swap(c1,c2) |
将c1和c2元素互换。 同上操作。 |
例程:
// 作者:ychw365
// 测试 deque 由于和vector 类似注视简写
#include "stdafx.h"
#include<iostream>
#include <deque>
using namespace std;
typedef deque<int> INTDEQUE;
INTDEQUE deque1;
INTDEQUE deque2(5,3);
//初始化
void initDeque()
{
int a[]={0,2,4,6,8,10,12,14};
deque1.resize(8);
copy(a,a+8,deque1.begin());
}
//打印
void ShowDeque(INTDEQUE & dequeTemp)
{
cout<<"元素数量"<< dequeTemp.size()<<endl;
for(INTDEQUE::iterator dIter=dequeTemp.begin();dIter!=dequeTemp.end();dIter++)
{
cout<<*dIter<<" ";
}
cout<<endl;
}
//构造函数 共7种 msdn 常用前5种
void constructor_test()
{
INTDEQUE deque3(4);
INTDEQUE deque4(deque2);
INTDEQUE deque5(deque1.begin(),deque1.end());
INTDEQUE deque6(++deque1.begin(),deque1.end(),deque1.get_allocator());
INTDEQUE deque7(3,1,deque1.get_allocator());
ShowDeque(deque1);
ShowDeque(deque2);
ShowDeque(deque3);
ShowDeque(deque4);
ShowDeque(deque5);
ShowDeque(deque6);
ShowDeque(deque7);
}
//重新分配数据
void assign_test()
{
deque1.assign(7,4);
ShowDeque(deque1);
deque1.assign(deque2.begin(),deque2.end());
ShowDeque(deque1);
}
//指定位置 等同于操作符[] 具体和vector相似 2个重载函数
void at_test()
{
ShowDeque(deque1);
int &i=deque1.at(0);
const int &j=deque1.at(1);
cout<<"第一个"<< i<<endl;
cout<< "第二个"<<j<<endl;
}
//最后一个元素
void back_test()
{
ShowDeque(deque1);
int &i=deque1.back();
const int &j=deque1.back();
cout<<"最后一个"<< i<<" "<<j<<endl;
}
//第一个元素
void front_test()
{
ShowDeque(deque1);
int &i=deque1.front();
const int &j=deque1.front();
cout<<"第一个"<< i<<" "<<j<<endl;
}
//返回第一个元素位置
void begin_test()
{
ShowDeque(deque1);
INTDEQUE::iterator dIter=deque1.begin();
INTDEQUE::const_iterator constIter =deque1.begin();
cout<<"第一个"<< *dIter<<" "<<*constIter<<endl;
}
//返回最后一个元素位置
void end_test()
{
ShowDeque(deque1);
INTDEQUE::iterator dIter=deque1.end();
INTDEQUE::const_iterator constIter =deque1.end();
cout<<"最后一个"<< *--dIter<<" "<<*--constIter<<endl;
}
//逆向返回第一个元素位置
void rbegin_test()
{
ShowDeque(deque1);
INTDEQUE::reverse_iterator dIter=deque1.rbegin();
INTDEQUE::const_reverse_iterator constIter =deque1.rbegin();
cout<<"逆向第一个"<< *dIter<<" "<<*constIter<<endl;
}
//返回最后一个元素位置
void rend_test()
{
ShowDeque(deque1);
INTDEQUE::reverse_iterator dIter=deque1.rend();
INTDEQUE::const_reverse_iterator constIter =deque1.rend();
cout<<"逆向最后一个"<< *--dIter<<" "<<*--constIter<<endl;
}
//清空
void clear_test()
{
ShowDeque(deque1);
deque1.clear();
ShowDeque(deque1);
}
//是否空
void empty_test()
{
if(!deque1.empty())
{
ShowDeque(deque1);
cout<<"this is not empty"<<endl;
deque1.clear();
}
if(deque1.empty())
{ ShowDeque(deque1);
cout<<"this is empty"<<endl;
}
}
//插入数据 3重载
void insert_test()
{
ShowDeque(deque1);
deque1.insert(deque1.begin(),9);
ShowDeque(deque1);
deque1.insert(deque1.begin(),3,1);
ShowDeque(deque1);
deque1.insert(deque1.begin(),deque2.begin(),deque2.end());
ShowDeque(deque1);
}
//删除 2重载
void erase_test()
{
ShowDeque(deque1);
deque1.erase(deque1.begin());
ShowDeque(deque1);
deque1.erase(++deque1.begin(),--deque1.end());
ShowDeque(deque1);
}
//最大数
void max_size_test()
{
int i=deque1.max_size();
cout<<"最大:"<< i<<endl;
}
//删除最后
void pop_back_test()
{
ShowDeque(deque1);
deque1.pop_back();
ShowDeque(deque1);
}
//删除前面
void pop_front_test()
{
ShowDeque(deque1);
deque1.pop_front();
ShowDeque(deque1);
}
// 在尾部加入一个数据。
void push_back_test()
{
ShowDeque(deque1);
deque1.push_back(11);
ShowDeque(deque1);
}
//在头部加入数据
void push_front_test()
{
ShowDeque(deque1);
deque1.push_front(11);
ShowDeque(deque1);
}
//元素数
void size_test()
{
ShowDeque(deque1);
int i=deque1.size();
cout<<"元素数目"<< i<<endl;
}
//重新分配
void resize_size()
{
ShowDeque(deque1);
deque1.resize(20);//不足的元素用0补满
ShowDeque(deque1);
}
//交换 2重载
void swap_test()
{
ShowDeque(deque1);
ShowDeque(deque2);
deque1.swap(deque2);
cout<<"交换"<<endl;
ShowDeque(deque1);
ShowDeque(deque2);
swap(deque1,deque2);
cout<<"交换"<<endl;
ShowDeque(deque1);
ShowDeque(deque2);
}
void main()
{
initDeque();
//constructor_test();
//assign_test();
//at_test();
//back_test();
//front_test();
//begin_test();
//end_test();
//rbegin_test();
//rend_test();
//clear_test();
//empty_test();
//insert_test();
//erase_test();
//max_size_test();
//pop_back_test();
//pop_front_test();
//push_back_test();
//push_front_test();
//size_test();
//resize_size();
swap_test();
getchar();
}