STL 容器(deque) 元素的訪問 迭代器

2022-06-03 17:42:10 字數 2215 閱讀 1991

這個部分和 vector 幾乎一樣

如下**:

1 #include 2 #include 3

4using

namespace

std;56

intmain()718

19 deqint_a.at(0) = 666

;20 deqint_a[1] = 888

;21 cout << "

用 .at 和下標操作符進行修改後 deqint_a 中的元素:

"<

22for (unsigned int i = 0; i < deqint_a.size(); i++)

2326

27return0;

28 }

列印結果:

也可以對普通變數進行賦值,如下**:

1 #include 2 #include 3

4using

namespace

std;56

intmain()734

35//

將值賦值回首位元素的引用

36 cout << "

將收尾的值各加 1 用首位元素的引用賦值回去

"<

37 int_3++;

38 int_4++;

39 deqint_a.front() =int_3;

40 deqint_a.back() =int_4;

41for (int i = 0; i < deqint_a.size(); i++)

4245

46return0;

47 }

列印結果:

看如下**示例:

1 #include 2 #include 3

4using

namespace

std;56

intmain()7;

9 deque deqint_a(test, test + 4

);10

11//

deque.begin()

12 cout << "

使用迭代器 begin() 遍歷容器

"<

13 deque::iterator it_begin = deqint_a.begin(); //

獲得容器中第乙個元素的位址

14for (; it_begin != deqint_a.end(); it_begin++)

1519

20//

deque.rbegin()

21 cout << "

\n\n使用迭代器 rbegin() 遍歷容器

"<

22 deque::reverse_iterator it_rbegin = deqint_a.rbegin(); //

注意迭代器型別是 reverse_iterator,deqint_a.rbegin()返回的是末尾位址

23for (; it_rbegin!=deqint_a.rend(); it_rbegin++) //

reverse_iterator型別++ 是像首位址移動,deqint_a.rend()返回的是首位址

2428

29//

deque.cbegin()

30 cout << "

\n\n使用迭代器 cbegin() 遍歷容器

"<

31 deque::const_iterator it_cbegin = deqint_a.cbegin(); //

注意迭代器型別是 const_iterator

32for (; it_cbegin!=deqint_a.cend(); it_cbegin++)

3337

38return0;

39 }

列印內容:

STL容器 deque實現

vector是單向開口的連續線性空間,deque則是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。vector雖然從技術上也可以實現對頭尾兩端進行操作,但由於vector的底層實現特點的原因,其頭部操作效率奇差,故stl沒有為vector實現這一功能。deque和vector...

STL通用容器之 deque 容器

1.5deque容器 deque容器為乙個給定型別的元素進行線性處理,就如向量,它能夠快速地隨機進入任乙個元素,並且能夠高效地 入和刪除容器的尾部元素。但它與vector不同,deque能支援高效插入和刪除容器的頭部元素,也叫做雙端佇列.1 建構函式 deque 建立乙個空deque deque i...

stl之序列容器 deque

相比於vector,deque是一種雙向開口的連續線性空間,可以在頭尾兩端分別做元素的插入和刪除操作。這也決定了其更賦值的容器結構。deque內部維護了start和finish 節點,用於雙端的插入和刪除 map,一塊連續空間,其每個元素都是個指標,指向乙個節點。其指向的節點中有四個元素 cur f...