在頭文件
namespace std
{
template >
class deque;
}
deque(雙向隊列)是一個索引序列的容器,允許對其頭部和尾部進行快速的插入和刪除。此外,在deque兩端插入和刪除並不會使其它元素的指針或引用失效。
與deque相反,deque中的元素並非連續存儲:典型的實現是使用一個單獨分配的固定大小數組的序列。
deque的存儲空間會自動按需擴大和縮小。擴大deque比擴大std::deque要便宜,因為它不涉及到現有元素復制到新的內存位置。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KCjxwPmRlcXVlyc+zo7z7stnX97XEuLTU09DUo6jQp8LKo6nI58/Co7ogPGJyPgrL5rv6t8POyiAtILOjyv1PKDEpIDxicj4K1Nq94c6yu/K/qs23suXI67vy0saz/dSqy9ggLSDMr8/6srux5E8oMSkgPGJyPgqy5cjru/LSxrP91KrL2CAtIM/f0NRPKG4pPC9wPgoKCgo8aDEgaWQ9"deque操作">deque操作
deque c //默認構造函數;創建一個空deque
deque c(c2) //復制構造函數;創建一個新的deque作為c2的副本(所有元素都被復制)
deque c = c2 //復制構造函數;創建一個新的deque作為c2的副本(所有元素都被復制)
deque c(rv) //移動構造函數;使用右值對象rv創建一個新deque
deque c = rv //移動構造函數;使用右值對象rv創建一個新deque
deque c(n) //使用默認構造函數創建含有n個元素的deque
deque c(n,elem) //創建一個deque,並使用n個elem進行初始化
deque c(beg,end) //創建一個deque,並使用beg到end范圍內的值進行初始化
deque c(initlist) //創建一個deque,並使用初始化列表進行初始化
deque c = initlist //創建一個deque,並使用初始化列表進行初始化
c.~deque() //銷毀所有元素並釋放內存
c.empty() //判斷容器是否為空,與size()==0相同,但可能更快
c.size() //返回當前元素數量
c.max_size() //返回可容納的元素最大數量
c.shrink_to_fit() //按要求根據元素的數量去縮小容量
c1 == c2 //判斷c1與c2是否相等
c1 != c2 //判斷c1與c2是否不相等,等同於!(c1==c2)
c1 < c2 //判斷c1是否小於c2
c1 > c2 //判斷c1是否大於c2
c1 <= c2 //判斷c1是否小於等於c2
c1 >= c2 //判斷c1是否大於等於c2
c = c2 //將c2所有元素賦值給c
c = rv //將右值對象rv的所有元素移動賦值給c
c = initlist //使用初始化列表進行賦值
c.assign(initlist) //使用初始化列表進行賦值
c.assign(n,elem) //使用n個elem元素進行賦值
c.assign(beg,end) //使用beg到end范圍內的元素進行賦值
c1.swap(c2) //交換c1和c2的數
swap(c1,c2) //交換c1和c2的數
c[idx] //返回索引idx所標示的元素,不進行范圍檢查
c.at(idx) //返回索引idx所標示的元素,如果越界,拋出range-error
c.front() //返回第一個元素,不檢查第一個元素是否存在
c.back() //返回最後一個元素,不檢查最後一個元素是否存在
c.begin() //返回一個隨機存取迭代器,指向第一個元素
c.end() //返回一個隨機存取迭代器,指向最後一個元素
c.cbegin() //返回一個隨機存取常迭代器,指向第一個元素
c.cend() //返回一個隨機存取常迭代器,指向最後一個元素
c.rbegin() //返回一個逆向迭代器,指向逆向迭代的第一個元素
c.rend() //返回一個逆向迭代器,指向逆向迭代的最後一個元素
c.crbegin() //返回一個逆向常迭代器,指向逆向迭代的第一個元素
c.crend() //返回一個逆向常迭代器,指向逆向迭代的最後一個元素
c.push_back(elem) //在末尾添加一個elem副本
c.pop_back() //移除末尾元素(但不回傳)
c.push_front(elem) //在頭部添加一個elem副本
c.pop_back() //移除頭部元素(但不回傳)
c.insert(pos,elem) //在迭代器位置前面插入一個elem副本,並返回新元素的位置
c.insert(pos,n,elem) //在迭代器位置前面插入n個elem副本,並返回第一個新元素的位置;若無新插入值,返回原位置
c.insert(pos,beg,end) //在迭代器位置前面插入范圍beg到end的所有元素的副本,並返回第一個新元素的位置;若無新插入值,返回原位置
c.insert(pos,initlist) //在迭代器位置前面插入初始化列表的所有元素的副本,並返回第一個新元素的位置;若無新插入值,返回原位置
c.emplace(pos,args...) //在迭代器位置前面插入一個使用args初始化的元素副本,並返回新元素的位置
c.emplace_back(args...) //在末尾添加一個使用args初始化的元素副本,無返回值
c.emplace_front(args...) //在頭部添加一個使用args初始化的元素副本,無返回值
c.erase(pos) //移除迭代器位置的元素,並返回下個元素的位置
c.erase(beg,end) //移除beg到end范圍內的所有元素,並返回下個元素的位置
c.resize(num) //將元素數量設為num(如果size()增大,多出來的元素使用默認構造函數創建)
c.resize(num,elem) //將元素數量設為num(如果size()增大,多出來的元素都是elem的副本)
c.clear() //移除所以元素,清空容器
#include
#include
#include
#include
using namespace std;
int main()
{
//創建deque
deque coll;
//插入元素
coll.assign (3, string("string"));
coll.push_back ("last string");
coll.push_front ("first string");
//輸出元素
copy (coll.cbegin(), coll.cend(),
ostream_iterator(cout,"\n"));
cout << endl;
//刪除元素
coll.pop_front();
coll.pop_back();
//除了第一個元素,每個元素都在頭部插入another
for (unsigned i=1; i(cout,"\n"));
return 0;
}
first string
string
string
string
last string
string
another string
another string
resized string