日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STL之Deque的使用方法

發布時間:2025/4/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STL之Deque的使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*deque:?是一個double-ended?queue,
? ? 1)支持隨即存取,也就是[]操作符,
? ? 2)支持兩端操作,push(pop)-back(front),在兩端操作上與list效率差不多

? ? 因此在實際使用時,如何選擇這三個容器中哪一個,應根據你的需要而定,一般應遵循下面的原則:?
? ? 1、如果你需要高效的隨即存取,而不在乎插入和刪除的效率,使用vector?
? ? 2、如果你需要大量的插入和刪除,而不關心隨即存取,則應使用list?
? ? 3、如果你需要隨即存取,而且關心兩端數據的插入和刪除,則應使用deque。
*/


#include?
<iostream>
#include?
<deque>
using?namespace?std;

void?printDeque(deque<int>?d)
{
//使用下標
//for?(unsigned?int?i?=?0;?i?<?d.size();?i++)
//{
//?cout<<"d["<<i<<"]?=?"<<d[i]<<",?";
//}

//使用迭代器
//deque<int>::iterator?iter?=?d.begin();
//for?(;iter?!=?d.end();?iter?++)
//{
//?cout<<"d["<<iter-d.begin()<<"]?=?"<<(*iter)<<",?";
//}

//使用迭代器指針
deque<int>::iterator?*pIter?=?new?deque<int>::iterator;
if?(?NULL?==?pIter?)
{
? ?
return?;
}

for?(*pIter?=?d.begin();?*pIter?!=?d.end();?(*pIter)++)
{
? ?cout
<<"d["<<*pIter?-?d.begin()?<<"]="<<**pIter<<",?";
}

if?(NULL?!=?pIter)
{
? ?delete?pIter;
? ?pIter?
=?NULL;
}


cout
<<endl;
}


void?main()
{
//創建deque
deque<int>?d1;?//創建一個沒有任何元素的deque對象
deque<int>?d2(10);//創建一個具有10個元素的deque對象,每個元素值為默認
deque<double>?d3(10,?5.5);?//伊妹一個具有10個元素的deque對象,每個元素的初始值為5.5
deque<double>?d4(d3);?//通過拷貝一個deque對象的元素值,?創建一個新的deque對象
int?iArray[]?=?{11,?13,?19,?23,?27};
deque
<int>?d5(iArray,?iArray+5);//將迭代器區間[first,?last)所指的元素拷貝到一個新創建的deque對象中

//初始化賦值:同vector一樣,使用尾部插入函數push_back()
for?(int?i?=?1;?i?<?6?;?i++)
? ?d1.push_back(i
*10);
//遍歷元素:?1-下標方式?2-迭代器方式?反向遍歷(略)
cout<<"printDeque(d1)?:?"<<endl;
printDeque(d1);

//元素插入:尾部插入用push_back(),頭部插入用push_front(),其它位置插入用insert(&pos,?elem)
cout<<"d1.push_front(100):?"<<endl;
d1.push_front(
100);
printDeque(d1);
cout
<<"d1.insert(d1.begin()+3,?200):?"<<endl;?//支持隨機存取(即[]操作符),所以begin()可以+3
d1.insert(d1.begin()+2,200);

printDeque(d1);

?

//元素刪除?尾部刪除用pop_back();頭部刪除用pop_front();?
//任意迭代位置或迭代區間上的元素刪除用erase(&pos)/erase(&first,?&last);刪除所有元素用clear();
cout<<"d1.pop_front():?"<<endl;
d1.pop_front();
printDeque(d1);

cout
<<"d1.erase(d1.begin()+1):?"<<endl;
d1.erase(d1.begin()
+1);?//刪除第2個元素d1[1]
printDeque(d1);

cout
<<"d1.erase(d1.begin(),?d1.begin()?+?2)?=?"<<endl;
d1.erase(d1.begin(),?d1.begin()?
+?2);
printDeque(d1);

cout
<<"d1.clear()?:"<<endl;
d1.clear();
printDeque(d1);


//其它常用
cout<<"其它常用用法:?"<<endl;
int?flag?=?0;
while(flag?<?2)
{
? ?
if?(0?==?flag?)
? ?
{
? ??
for?(int?i?=?1;?i?<?6?;?i++)?//恢復
? ? ?d1.push_back(i*10);
? ?}

? ?
else
? ?
{
? ? d1.clear();
? ? cout
<<"after?d1.clear()?,?d1.front(),?d1.back()?is?abnormal!?other?info.:"<<endl;
? ?}

? ?cout
<<"d1.empty()?=?"<<d1.empty()<<endl;
? ?cout
<<"d1.size()?=?"<<d1.size()<<endl;
? ?cout
<<"d1.max_size()?=?"<<hex<<d1.max_size()<<endl;
? ?
if?(!d1.empty())
? ?
{
? ? cout
<<"d1.front()?=?"<<d1.front()<<endl;
? ? cout
<<"d1.back()?=?"<<d1.back()<<endl;
? ?}

??
? ?flag
++;
??
}


//交換
cout<<"d1.swap(d5)=?"<<endl;
d1.swap(d5);
cout
<<"d1?=?";
printDeque(d1);
cout
<<"d5?=?";
printDeque(d5);
//printDeque(d)

}

?

?轉帖自:http://www.cppblog.com/huyutian/articles/107459.html

轉載于:https://www.cnblogs.com/g0feng/archive/2012/05/15/2502303.html

總結

以上是生活随笔為你收集整理的STL之Deque的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。