STL顺序容器之deque双端队列

deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。

deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()vector不支持的操作。

deque的一些性质:

1:与vector容器一样,在deque容器的中间insert或erase元素效率比较低。

2:不同于vector容器,deque容器提供高效地在其首部实现insert或erase操作,就像在容器尾一样。

3:与vector容器一样而不同于list容器的是,deque容器支持对所有元素的随机访问。

4:在deque容器首部或尾部插入元素不会使任何迭代器失效,而在首部或尾部删除元素则只会使指向该元素的迭代器失效。在deque容器的任何其他位置的插入与删除操作将使指向该容器元素的所有迭代器失效。

使用示例1:

#include <iostream>
#include <deque>
using namespace std;
template <typename T>
class Print{
	public:
	void operator() (T& t){
	cout << t << " ";	
	}
};
int main(){
    deque<int> d;
    Print<int> print;
    for(int i = 0; i < 5; ++i)
     d.push_back(i + 1);
     //push_front() only apply to list and deque
     d.push_front(0);
    //pop_front() only applyy to list and deque
     cout << "pop_front():" << endl;
     while(! d.empty()){
      for_each(d.begin(),d.end(),print);
      cout << endl;
	  d.pop_front();	
     }
     //pop_back()
        for(int i = 0; i < 5; ++i)
     d.push_back(i + 1);
     cout << "pop_back():" << endl;
     while(! d.empty()){
      for_each(d.begin(),d.end(),print);
      cout << endl;
	  d.pop_back();	
     }
}

运行结果:

pop_front():
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
pop_back():
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
其他诸如swap,assign等操作同vector一致,使用示例可以直接参见

STL顺序容器之vector类型

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值