STL常用容器用法之——Deque

来源:互联网 发布:php中使用url传递数组 编辑:程序博客网 时间:2024/05/17 13:14

Deque容器

deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。

deque在接口上和vector非常相似,在许多操作的地方可以直接替换。

deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)

deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。

1、deque的添加移除获取元素操作

deque.push_back(elem);   //在容器尾部添加一个数据

deque.push_front(elem);  //在容器头部插入一个数据

deque.pop_back();                  //删除容器最后一个数据

 deque.pop_front();              //删除容器第一个数据

例:

deque<int> d1; 
d1.push_back(1);
d1.push_back(3);
d1.push_back(5);

d1.push_front(-11);
d1.push_front(-33);
d1.push_front(-55);// d1 {-55 -33 -11 1 3 5}

 deque.at(idx);  //返回索引idx所指的数据,如果idx越界,抛出out_of_range。

deque[idx];  //返回索引idx所指的数据,如果idx越界,不抛出异常,直接出错。

deque.front();   //返回第一个数据。

deque.back();  //返回最后一个数据


//查找 -33 在数组下标的值
deque<int>::iterator it =  find(d1.begin(), d1.end(), -33 ); //  #include "algorithm"
if (it != d1.end())
{
cout << "-33数组下标是" << distance(d1.begin(), it) <<endl; //
}
else
{
cout << "没有找到值为-33的元素" << endl;
}

2、deque与迭代器

deque.begin();  //返回容器中第一个元素的迭代器。

deque.end();  //返回容器中最后一个元素之后的迭代器。

deque.rbegin();  //返回容器中倒数第一个元素的迭代器。

 deque.rend();   //返回容器中倒数最后一个元素之后的迭代器。

3、deque对象的带参数构造


deque(beg,end);    //构造函数将[beg,end)区间中的元素拷贝给本身。注意该区间是左闭右开的区间。

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

deque(const deque &deq);  //拷贝构造函数。

 

deque<int> deqIntA;

                   deqIntA.push_back(1);

                   deqIntA.push_back(3);

                   deqIntA.push_back(5);

                   deqIntA.push_back(7);

                   deqIntA.push_back(9);

 

                   deque<int>deqIntB(deqIntA.begin(),deqIntA.end());              //13 5 7 9

                   deque<int>deqIntC(5,8);                                                                 //88 8 8 8

                   deque<int>deqIntD(deqIntA);                                                       //13 5 7 9







原创粉丝点击