第七十二讲 队列(1)


关于容器,我们说了最为重要的两个,vector和list,现在STL里面剩下的也不多了,现在只剩下一个叫做队列的东西,不过队列的东西有三个:deque,stack,queue,当然还有一个priority_queue。

今天我们主要说的是deque,其实关于deque,我们实在没啥好说的,因为如果我们要再来演示一遍,那么等于又重复了我们vector和list一遍。

deque是一种双端列队,他是一门优化过的序列,他不但拥有vector的操作,还拥有list的前端操作,但是对于其他地方的插入和删除和vector一样效率低得吓人,现在我们已经知道deque的样貌,而且他所拥有的方法我们已经都见识过,所以,现在学习他唯一的办法就是来看一个实例。

——————————-

template<typename T>


void show(deque<T>&

ml){

deque<T>::iterator it = ml.begin();

while (it != ml.end())

cout <<*it++ <<"

"

;

cout <<endl;

}

int main(){


int a[] ={ 2, 3, 6, 1, 4, 3, 6, 6, 4, 3, 2, 7, 9, 2
};

deque<int>mDeque;


for (int i = 0;

i <7;

i++)

mDeque.push_back(a[i]);

show(mDeque);


for (int i = 0;

i <7;

i++)

mDeque.push_front(a[7 + i]);

show(mDeque);


return 0;

}

—————————-

运行程序得到结果如下:

————————–

2 1 6 3 4 3 6

2 9 7 2 3 4 6 2 1 6 3 4 3 6

—————————

好吧,大家可能会问,为什么deque这么好用,为什么还要用vector呢?当然还是因为效率问题,deque是优化过的容器,所以在效率上面还是赶不上vector,尤其是使用前端操作的时候,效率更会大打折扣,而当他们需要插入或者是删除元素的时候,我们的选择当然会是list,对于很大的数据来说,插入或者删除中间的数据要比把这个容器复制给list,然后再来删除或者插入,当然这些东西还得视情况而定。

OK,今天就这样吧,我们下周再见。


================================

回复D直接查看目录

原文始发于微信公众号(

C/C++的编程教室

):第七十二讲 队列(1)

|

发表评论