C++ deque獲取(存取)元素方法詳解

2020-07-16 10:04:30
可以使用下標運算子來存取 deque 容器中的元素。這個操作和 vector 容器中的類似,所以下標也沒有做邊界檢查。

deque 容器中的元素是序列,但是內部的儲存方式和 vector 不同。它組織元素的方式導致容器的大小總是和容量相等。因為這個,所以沒有定義成員函數 capacity(),deque 只有成員函數 size(),它以成員型別 size_type 的無符號整型來返回當前元素個數。

同樣因為 deque 內部組織元素的方式不同,deque 的操作和 vector 相比要慢。

可以用下標運算子來存取元素,但是索引並沒有進行邊界檢查。為了用進行邊界檢查的索引來存取元素,可以選擇使用成員函數 at(),這和 vector 相同:
std::cout << words.at(2) << std::endl; // Output the third element in words
引數必須是一個 size_t 型別的值,因此不能是負數。如果 at() 的引數不在範圍內,例如大於 words.size()-1,就會丟擲一個 std::out_of_range 異常。

deque 成員函數 front() 和 back() 的用法也和 vector 相同,然而,deque 卻沒有成員函數 data(),因為元素並沒有被存放在陣列中。deque 容器和 vector 一樣,有三種不同過載版本的 resize() 函數,它們的操作基本相同。