C++ STL学习——deque

 

C++ STL学习——deque

标签: STL deque
  2160人阅读  评论(0)  收藏  举报
  分类:
算法设计(79) 

       在数据结构中还有一种很常见的队列叫做双端队列,我们在上一篇博客《C++ STL学习——queue》中讲到的队列queue是一种最标准的队列,只能在尾部插入数据,在头部删除数据。而今天我们讲到的deque分别可以在两端进行插入与删除,可以说用起来更加的灵活。示例代码上传至 https://github.com/chenyufeng1991/STL_deque 。

(1)创建一个deque

[cpp]  view plain  copy
  1. deque<int> deque1;  
  2. deque<int> deque2(deque1);  
  3. deque<int> deque3(10);  
  4. deque<int> deque4(10,0);  

(2)deque尾部插入数据

[cpp]  view plain  copy
  1. deque1.push_back(1);  
  2. deque1.push_back(2);  
  3. deque1.push_back(3);  
  4. deque1.push_back(4);  
  5. PrintDeque(deque1);  


(3)deque头部插入数据

[cpp]  view plain  copy
  1. deque1.push_front(5);  
  2. deque1.push_front(6);  
  3. PrintDeque(deque1);  

(4)查看头部元素、尾部元素和某位置元素

[cpp]  view plain  copy
  1. cout << "头部元素为:" << deque1.front() << endl;  
  2. cout << "尾部元素为:" << deque1.back() << endl;  
  3.   
  4. cout << "某位置的元素为:" << deque1.at(2) << endl;  
  5. cout << "某位置的元素为:" << deque1[2] << endl;  


(5)使用迭代器在某位置插入元素

[cpp]  view plain  copy
  1. // 使用迭代器插入或删除元素  
  2.     deque<int>::iterator iterInsert = deque1.begin();  
  3.     iterInsert = iterInsert + 2;  
  4.     deque1.insert(iterInsert, 99);  
  5.     PrintDeque(deque1);  


(6)使用迭代器在某位置删除元素

[cpp]  view plain  copy
  1. deque<int>::iterator iterErase = deque1.begin();  
  2. iterErase = iterErase + 2;  
  3. deque1.erase(iterErase);  
  4. PrintDeque(deque1);  


(7)size(), max_size()

[cpp]  view plain  copy
  1. cout << "deque1.size = " << deque1.size() << endl;  
  2. cout << "deque1.max_size = " << deque1.max_size() << endl;  


(8)头部、尾部删除元素

[cpp]  view plain  copy
  1. deque1.pop_back();  
  2. PrintDeque(deque1);  
  3.   
  4. deque1.pop_front();  
  5. PrintDeque(deque1);  


(9)交换两个deque

[cpp]  view plain  copy
  1. // 交换两个deque  
  2. deque<int> dequeSwap;  
  3. dequeSwap.push_back(11);  
  4. dequeSwap.push_back(22);  
  5. dequeSwap.push_back(33);  
  6.   
  7. cout << "deque1:" ;  
  8. PrintDeque(deque1);  
  9. cout << "dequeSwap:";  
  10. PrintDeque(dequeSwap);  
  11.   
  12. deque1.swap(dequeSwap);  
  13. cout << "deque1:" ;  
  14. PrintDeque(deque1);  
  15. cout << "dequeSwap:";  
  16. PrintDeque(dequeSwap);  


(10)判断deque是否为空

[cpp]  view plain  copy
  1. cout << "deque是否为空:" << deque1.empty() << endl;  
  2. deque1.clear();  
  3. cout << "deque是否为空:" << deque1.empty() << endl;  
  4. PrintDeque(deque1);  


(11)迭代器打印deque

[cpp]  view plain  copy
  1. void PrintDeque(deque<int> pDeque)  
  2. {  
  3.     cout << "deque元素为:";  
  4.     deque<int>::iterator dequeIter;  
  5.     for (dequeIter = pDeque.begin(); dequeIter != pDeque.end(); dequeIter++)  
  6.     {  
  7.         cout << *dequeIter << " ";  
  8.     }  
  9.   
  10.     cout << endl;  
  11. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值