山东神华网站建设,国家icp备案查询系统,设置 iis 网站维护中,广西建设培训网dequeDouble Ended Queues(双向队列)deque和vector很相似#xff0c;但是它允许在容器头部快速插入和删除#xff08;就像在尾部一样#xff09;。所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是#xff0c;deque 容器中存储元素并不能保证所有元素都存储到连续的内…dequeDouble Ended Queues(双向队列)deque和vector很相似但是它允许在容器头部快速插入和删除就像在尾部一样。所耗费的时间复杂度也为常数阶O(1)。并且更重要的一点是deque 容器中存储元素并不能保证所有元素都存储到连续的内存空间中。C STL deque容器详解版 (biancheng.net) 这个网站真的好好用啊~deque的创建    dequeint dq1();   //创建一个空的双向队列 dequeint dq2(10); //创建一个大小为10的双向队列,//其中每个元素都默认为0 dequeint dq3(10,5);//创建一个包含10个5的双向队列 dequeint dq4(dq2); //通过拷贝dq2创建一个新的deque容器//通过拷贝其他类型容器中指定区域内的元素创建一个双向队列 arrayint,5arr{11,12,13,14,15}; //适用于所有类型的容器 dequeint dq5(arr.begin()2,arr.end());//拷贝arr容器中的{131415} deque容器可利用的成员函数基于 deque 双端队列的特点该容器包含一些 array、vector 容器都没有的成员函数。参考C STL deque容器详解版 (biancheng.net)#include iostream
#include deque
using namespace std;
int main()
{//初始化一个空deque容量dequeintd;//向d容器中的尾部依次添加 12,3d.push_back(1); //{1}d.push_back(2); //{1,2}d.push_back(3); //{1,2,3}//向d容器的头部添加 0 d.push_front(0); //{0,1,2,3}//调用 size() 成员函数输出该容器存储的字符个数。printf(元素个数为%d\n, d.size());//使用迭代器遍历容器for (auto i  d.begin(); i  d.end(); i) {cout  *i   ;}cout  endl;return 0;
}需要注意的是在使用反向迭代器进行  或 -- 运算时 指的是迭代器向左移动一位-- 指的是迭代器向右移动一位即这两个运算符的功能也“互换”了。除此之外当向 deque 容器添加元素时deque 容器会申请更多的内存空间同时其包含的所有元素可能会被复制或移动到新的内存地址原来占用的内存会释放这会导致之前创建的迭代器失效。deque访问元素和 array、vector 容器一样可以采用普通数组访问存储元素的方式访问 deque 容器中的元素比如#include iostream
#include deque
using namespace std;
int main()
{dequeintd{ 1,2,3,4 };cout  d[1]  endl;//修改指定下标位置处的元素d[1]  5;cout  d[1]  endl;return 0;
}
输出 
2
5可以看到容器名[n]的这种方式不仅可以访问容器中的元素还可以对其进行修改。但需要注意的是使用此方法需确保下标 n 的值不会超过容器中存储元素的个数否则会发生越界访问的错误。如果想有效地避免越界访问可以使用 deque 模板类提供的 at() 成员函数由于该函数会返回容器中指定位置处元素的引用形式因此利用该函数的返回值既可以访问指定位置处的元素如果需要还可以对其进行修改。不仅如此at() 成员函数会自行判定访问位置是否越界如果越界则抛出std::out_of_range异常。例如#include iostream
#include deque
using namespace std;
int main()
{dequeintd{ 1,2,3,4 };cout  d.at(1)  endl;d.at(1)  5;cout  d.at(1)  endl;//下面这条语句会抛出 out_of_range 异常//cout  d.at(10)  endl;return 0;
}除此之外deque 容器还提供了 2 个成员函数即 front() 和 back()它们分别返回 vector 容器中第一个和最后一个元素的引用通过利用它们的返回值可以访问甚至修改容器中的首尾元素。总结deque访问、修改元素可以用d[1]和at1两种方式不过使用at时越界会有提示。注意和 vector 容器不同deque 容器没有提供 data() 成员函数同时 deque 容器在存储元素时也无法保证其会将元素存储在连续的内存空间中因此尝试使用指针去访问 deque 容器中指定位置处的元素是非常危险的。可以实现遍历 deque 容器中指定区域元素的方法。例如#include iostream
#include deque
using namespace std;
int main()
{dequeint d{ 1,2,3,4,5 };//从元素 2 开始遍历auto first  d.begin()  1;//遍历至 5 结束不包括 5auto end  d.end() - 1;while (first  end) {cout  *first   ;first;}return 0;
}deque容器添加、删除元素方法C STL deque容器添加和删除元素方法完全攻略 (biancheng.net)在实际应用中常用 emplace()、emplace_front() 和 emplace_back() 分别代替 insert()、push_front() 和 push_back(。#include deque
#include iostream
using namespace std;
int main()
{dequeintd;//调用push_back()向容器尾部添加数据。d.push_back(2); //{2}//调用pop_back()移除容器尾部的一个数据。d.pop_back(); //{}//调用push_front()向容器头部添加数据。d.push_front(2);//{2}//调用pop_front()移除容器头部的一个数据。d.pop_front();//{}//调用 emplace 系列函数向容器中直接生成数据。d.emplace_back(2); //{2}d.emplace_front(3); //{3,2}//emplace() 需要 2 个参数第一个为指定插入位置的迭代器第二个是插入的值。d.emplace(d.begin()  1, 4);//{3,4,2}for (auto i : d) {cout  i   ;}//erase()可以接受一个迭代器表示要删除元素所在位置//也可以接受 2 个迭代器表示要删除元素所在的区域。d.erase(d.begin());//{4,2}d.erase(d.begin(), d.end());//{}等同于 d.clear()return 0;
}insert函数的使用方法#include iostream
#include deque
#include array
using namespace std;
int main()
{std::dequeint d{ 1,2 };//第一种格式用法d.insert(d.begin()  1, 3);//{1,3,2}//第二种格式用法d.insert(d.end(), 2, 5);//{1,3,2,5,5}//第三种格式用法std::arrayint, 3test{ 7,8,9 };d.insert(d.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}//第四种格式用法d.insert(d.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}for (int i  0; i  d.size(); i) {cout  d[i]   ;}return 0;
}
 文章转载自: http://www.morning.hlwzd.cn.gov.cn.hlwzd.cn http://www.morning.khcpx.cn.gov.cn.khcpx.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.qwdlj.cn.gov.cn.qwdlj.cn http://www.morning.hxxzp.cn.gov.cn.hxxzp.cn http://www.morning.czwed.com.gov.cn.czwed.com http://www.morning.zwgbz.cn.gov.cn.zwgbz.cn http://www.morning.wbxrl.cn.gov.cn.wbxrl.cn http://www.morning.easiuse.com.gov.cn.easiuse.com http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn http://www.morning.c7624.cn.gov.cn.c7624.cn http://www.morning.dfffm.cn.gov.cn.dfffm.cn http://www.morning.bsjxh.cn.gov.cn.bsjxh.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.bmnm.cn.gov.cn.bmnm.cn http://www.morning.gwdmj.cn.gov.cn.gwdmj.cn http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn http://www.morning.llyqm.cn.gov.cn.llyqm.cn http://www.morning.wmmjw.cn.gov.cn.wmmjw.cn http://www.morning.llyjx.cn.gov.cn.llyjx.cn http://www.morning.lxmmx.cn.gov.cn.lxmmx.cn http://www.morning.touziyou.cn.gov.cn.touziyou.cn http://www.morning.tymnr.cn.gov.cn.tymnr.cn http://www.morning.brkrt.cn.gov.cn.brkrt.cn http://www.morning.djpgc.cn.gov.cn.djpgc.cn http://www.morning.hflrz.cn.gov.cn.hflrz.cn http://www.morning.bhwll.cn.gov.cn.bhwll.cn http://www.morning.jcfdk.cn.gov.cn.jcfdk.cn http://www.morning.bktly.cn.gov.cn.bktly.cn http://www.morning.fwcjy.cn.gov.cn.fwcjy.cn http://www.morning.kkwgg.cn.gov.cn.kkwgg.cn http://www.morning.pwrkl.cn.gov.cn.pwrkl.cn http://www.morning.bprsd.cn.gov.cn.bprsd.cn http://www.morning.woyoua.com.gov.cn.woyoua.com http://www.morning.wgqtt.cn.gov.cn.wgqtt.cn http://www.morning.tlrxp.cn.gov.cn.tlrxp.cn http://www.morning.xrpjr.cn.gov.cn.xrpjr.cn http://www.morning.mggwr.cn.gov.cn.mggwr.cn http://www.morning.yrngx.cn.gov.cn.yrngx.cn http://www.morning.thrcj.cn.gov.cn.thrcj.cn http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn http://www.morning.lzqdl.cn.gov.cn.lzqdl.cn http://www.morning.mlycx.cn.gov.cn.mlycx.cn http://www.morning.ryxdf.cn.gov.cn.ryxdf.cn http://www.morning.xhftj.cn.gov.cn.xhftj.cn http://www.morning.fhghy.cn.gov.cn.fhghy.cn http://www.morning.ndlww.cn.gov.cn.ndlww.cn http://www.morning.wrbf.cn.gov.cn.wrbf.cn http://www.morning.yqlrq.cn.gov.cn.yqlrq.cn http://www.morning.llxqj.cn.gov.cn.llxqj.cn http://www.morning.znknj.cn.gov.cn.znknj.cn http://www.morning.jjsxh.cn.gov.cn.jjsxh.cn http://www.morning.srrzb.cn.gov.cn.srrzb.cn http://www.morning.wwsgl.com.gov.cn.wwsgl.com http://www.morning.ydtdn.cn.gov.cn.ydtdn.cn http://www.morning.hnrqn.cn.gov.cn.hnrqn.cn http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.rnmdp.cn.gov.cn.rnmdp.cn http://www.morning.hphqy.cn.gov.cn.hphqy.cn http://www.morning.qytby.cn.gov.cn.qytby.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.nldsd.cn.gov.cn.nldsd.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.ktlfb.cn.gov.cn.ktlfb.cn http://www.morning.jgcxh.cn.gov.cn.jgcxh.cn http://www.morning.jfxdy.cn.gov.cn.jfxdy.cn http://www.morning.snmsq.cn.gov.cn.snmsq.cn http://www.morning.lhwlp.cn.gov.cn.lhwlp.cn http://www.morning.thjqk.cn.gov.cn.thjqk.cn http://www.morning.rcyrm.cn.gov.cn.rcyrm.cn http://www.morning.rgnp.cn.gov.cn.rgnp.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.npkrm.cn.gov.cn.npkrm.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.prprj.cn.gov.cn.prprj.cn http://www.morning.rbnp.cn.gov.cn.rbnp.cn http://www.morning.hhskr.cn.gov.cn.hhskr.cn