std::deque的使用
生活随笔
收集整理的這篇文章主要介紹了
std::deque的使用
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄[-]
1、deque、list、vector區(qū)別
??deque與vector在存儲(chǔ)上的不同:deque為非連續(xù)存儲(chǔ),當(dāng)前段存儲(chǔ)滿(mǎn)后,將新申請(qǐng)的內(nèi)存掛接在原段的后面,之前的數(shù)據(jù)無(wú)需操作。vector則當(dāng)前段存儲(chǔ)滿(mǎn)后,申請(qǐng)更大的內(nèi)存,將原來(lái)的數(shù)據(jù)拷貝到新內(nèi)存中。
??vector:隨機(jī)訪問(wèn)操作頻率高。
??list:插入刪除頻率高,但只可在頭部尾部進(jìn)行添加與刪除。
??deque:通過(guò) [ ]?以及 .at(int)支持隨機(jī)訪問(wèn),可在內(nèi)部進(jìn)行插入與刪除。但性能不及l(fā)ist。
2、deque容器
deque容器為一個(gè)給定類(lèi)型的元素進(jìn)行線性處理,像向量一樣,它能夠快速地隨機(jī)訪問(wèn)任一個(gè)元素,并且能夠高效地插入和刪除容器的尾部元素。但它又與vector不同,deque支持高效插入和刪除容器的頭部元素,因此也叫做雙端隊(duì)列。deque類(lèi)常用的函數(shù)如下。
# 定義方式std::deque<int> numberOfArray; # 向雙端隊(duì)列頭部增加數(shù)據(jù)numberOfArray.push_front(2); # 向雙端隊(duì)列尾部增加數(shù)據(jù)numberOfArray.push_back(3); # 刪除雙端隊(duì)列頭部數(shù)據(jù)numberOfArray.pop_front(); # 刪除雙端隊(duì)列尾部數(shù)據(jù)numberOfArray.pop_back(); # 清除雙端隊(duì)列中的所有數(shù)據(jù)numberOfArray.clear(); # 為雙端隊(duì)列分配內(nèi)容numberOfArray.assign(2,100);//分配兩個(gè)100 # 在指定位置處增加一個(gè)數(shù)據(jù)numberOfArray.insert(numberOfArray.begin(),2); # 等價(jià)于numberOfArray.push_front(2); # 在指定位置處增加多個(gè)相同的數(shù)據(jù)numberOfArray.insert(numberOfArray.begin(),6,2);//添加6個(gè)2 # 復(fù)制兩個(gè)指定位置間的數(shù)據(jù)numberOfArray.insert(numberOfArray.begin(),numberOfArray.begin),end()); # 返回指定位置的元素numberOfArray.at(1); # 返回首元素應(yīng)用numberOfArray.front(); # 返回尾巴元素應(yīng)用numberOfArray.back(); # 判斷雙向隊(duì)列大家哦兒哦0numberOfArray.empty(); # 返回元素中數(shù)據(jù)格式numberOfArray.size();3、示例
#include<iostream> #include<deque>int main(int argc, char* argv[]){std::deque<int> numberOfArray;numberOfArray.push_front(2);numberOfArray.push_front(4);numberOfArray.push_front(3);//numberOfArray.pop_back();for(unsigned char i =0;i<numberOfArray.size();++i)std::cout<<numberOfArray.at(i)<<std::endl; }總結(jié)
以上是生活随笔為你收集整理的std::deque的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql5.6 memcached_M
- 下一篇: 垃圾回收算法_垃圾回收算法有哪些