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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ STL deque容器成员函数

發布時間:2023/12/10 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ STL deque容器成员函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

deque是雙向隊列,即可以在頭部插入刪除,也可以在尾部插入刪除。內部并不連續,這一點和vector并不一樣。可能第1個元素和第2個元素的地址是不連在一起的。在使用時用it迭代器會安全一點。

這是c++ 98標準的,不是c++11的。11標準新加的函數沒在這里說明。里面大部分函數是經過測試的才得出的結論。

函數(下面將iterator簡化為it)

描述

Void?c.assign(it?beg,it?end)
void?c.assign(it?n,元素類型??elem)?

將拷貝[beg;?end)區間中的數據用覆蓋式地賦值給c2個參數是不包含元素的。
nelem的賦值給c

這兩個函數均會將原來的容器清空再賦值。Iteratorc相同的容器類型。

it?c.at(int?idx)?

傳回索引idx所指的數據,idx0開始,如果idx越界,拋出out_of_range

reference?c.back()?

傳回最后一個數據,不檢查這個數據是否存在。只傳不刪。注意返回值與begin不同。

it?c.begin()?

傳回迭代器中的第一個數據地址。返回的是第1個數據的地址,即iterator

Void?c.clear()?

移除容器中所有數據,被清空了,再訪問里面的數據會出錯。

Void?c.empty()?

判斷容器是否為空。返回值為bool型。若空則返true,若非空返false

it?c.end()?

指向迭代器中的最后一個數據的下一個數據的地址,該地址是沒有元素的,與begin搭配的。若容器為空,返回與begin同樣地址。

It?c.erase(it?pos)
it?c.erase(it?beg,it?end)?

刪除pos位置的數據,傳回下一個數據的位置。
刪除[beg,end)區間的數據,傳回下一個數據的位置。2個參數是最后一個元素的首地址,即該地址是有元素的。

Reference?c.front()?

傳回容器中第一個數據,不檢查這個數據是否存在。只傳不刪。

c.get_allocator()

使用構造函數返回一個拷貝。//此函數暫不知道怎么用,windows下不太一樣。原型allocator_type?get_allocator()?const;

It?c.insert(it?pos,元素類型?elem)?
void?c.insert(it?pos,int?n,元素類型?elem)
void?c.insert(it?pos,it?beg,it?end)

pos位置插入一個elem元素拷貝,傳回新數據位置。邏輯上pos處的元素就往后移了。
pos位置插入nelem元素。
pos位置插入在[beg,end)區間的數據,這些數據也是屬于容器中的。end沒有實際元素。

Int?c.max_size()?

返回容器中可容納多少個元素。不同類型的deque,可容納數量不同。

Void?c.pop_back()?

刪除最后一個數據。

Void?c.pop_front()?

刪除頭部數據。

Void?c.push_back(元素類型?elem)?

在尾部加入一個數據。

Void?c.push_front(元素類型?elem)?

在頭部插入一個數據。

It?c.rbegin()?

傳回一個逆向隊列的第一個數據的地址。使用這兩個可以逆向輸出。

It?c.rend()?

傳回一個逆向隊列的最后一個數據的下一個位置的地址。

Void?c.resize(int?num,可選的默認值)?

重新指定隊列的元素數量為num個。2種情況:1.num比存在的元素個數要少,則刪除尾部的元素以調整個數。2.num比實際存在的元素要多,則在實際元素之后填充默認值以調整個數。(第2個元素為可選,若沒有則默認為該類型的默認值)

Int?c.size()?

返回容器中目前存放了多少個元素。(這個和max_size不同)

Void?c1.swap(deuqe?c2)?
void?swap(deque?c1,deque?c2)

c1c2中的元素互換,c1c2都是同一類型的deque
作用同上,這個可以直接用。

deque<Elem>?c
deque<Elem>?c1(deque?c2)
Deque<Elem>?c(int?n)
Deque<Elem>?c(int?n,?類型?elem)
Deque<Elem>?c(it?beg,it?end)
c.~deque<Elem>()?

創建一個空的dequeElem可以為intchar等等很多種類型。
c2初始化為c1,相當于復制出一個隊列副本
創建一個deque,含有n個數據,數據均由缺省值在創建時初始化。
創建一個含有nelem拷貝的deque
創建一個以[beg;end)區間的deque
銷毀所有數據,釋放內存,但是c還可以繼續使用,只不過包含的元素個數為0

?

轉載于:https://www.cnblogs.com/xcw0754/p/4263488.html

總結

以上是生活随笔為你收集整理的c++ STL deque容器成员函数的全部內容,希望文章能夠幫你解決所遇到的問題。

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