STL總結複習(1)

2021-10-07 01:15:57 字數 1365 閱讀 8435

1.cbegin() 迭代器是常量迭代器,這個迭代器本身可以加減,但是不能用其修改指向的內容

2.array::at會檢查陣列邊界並通過丟擲乙個out_of_range異常來判斷n是否超出範圍,而array::operator[ ]不檢查邊界。

3.back(),front() 返回的是容器第乙個和最後乙個元素的引用,對空陣列呼叫這兩個函式會產生未定義的行為。

4.形如:std::get<0>(myarray);傳入乙個陣列容器,返回指定位置元素的引用。

5.vector與陣列(array)相比,可以動態的改變大小。多次的push_back可能導致陣列大小的頻繁改變,重新分配乙個陣列,並將原來的元素移入其中,是乙個在時間上相對昂貴的任務。另外庫可以實現不同的增長策略增長到記憶體使用和重新分配之間的額平衡。

6.調整容器的大小,使其包含n個元素。如果n小於當前的容器size,內容將被縮小到前n個元素,將其刪除(並銷毀它們)。如果n大於當前容器size,則通過在末尾插入盡可能多的元素以達到大小n來擴充套件內容。如果指定了val,則新元素將初始化為val的副本,否則將進行值初始化。

如果n也大於當前的容器的capacity(容量),分配的儲存空間將自動重新分配。

注意這個函式通過插入或者刪除元素的內容來改變容器的實際內容。

#include

#include

int main (

)

7.vector::reserve

請求vector容量至少足以包含n個元素。

如果n大於當前vector容量,則該函式使容器重新分配其儲存容量,從而將其容量增加到n(或更大)。

在所有其他情況下,函式呼叫不會導致重新分配,並且vector容量不受影響。這個函式對vector大小沒有影響,也不能改變它的元素。

#include

#include

int main ()}

std::vector<

int> bar;

sz = bar.

capacity()

; bar.

reserve

(100);

// this is the only difference with foo above

std::cout <<

"****** bar grow:\n"

;for

(int i=

0; i<

100;

++i)

}return0;

}

int

main()

vector::emplace_back

參考,部分複製於

侵刪

STL複習(1)之string容器

1.string和char 區別 char 是乙個指標 string是乙個類,類內部封裝了char 管理這個字串,是乙個char 型的容器 2.建構函式 string 建立乙個空的字串 例如 string str string const char s 使用字串s初始化 string const s...

C CLI複習總結 1 語言

只說重點難點,以及在iso c 上的變化 1.運算子過載 要加static了 2.建構函式間的呼叫 呼叫同class 中的其他建構函式,用 gcnew this c 的形式 呼叫父類的建構函式,如c2 c1 1 呼叫了c1 int a 這個建構函式 3.取代 作為取引用,當然還有 取控制代碼 4.覆...

python複習 概念總結1

一 迴圈 流程 就是計算機執行 的順序 流程控制 對計算機 執行的順序進行有效的管理,只有流程控制才能實現在開發當中的 業務邏輯 流程控制的分類 1.順序流程 就是 一種自上而下的執行結構,也是python預設的流程 2.選擇流程 分支流程 根據在某一步的判斷,有選擇的去執行相應的邏輯的一種結構 2...