STL之Deque

来源:互联网 发布:数据库远程连接 编辑:程序博客网 时间:2024/06/11 10:25
 成员

函数

描述

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();}


 

 

原创粉丝点击