c STL 容器 中 swap的使用

2021-10-08 18:34:43 字數 3685 閱讀 7163

主要涉及以下內容:

可以從下面**中檢視上述內容的解釋

#include #include #include void  printvector(std::vectorv)

}int swap_usage()

int size_capacity()

printf("--------------------------\n");

std::vectorv2;

printf("------------v2------------\n");

v2.resize(20);

for (int i = 0; i < 40; i++)

printf("--------------------------\n");

printf("--------v2.resize(5)------\n");

v2.resize(5);

// 通過發現resize 之後capacity 容量並沒有發生變化,空間並沒有釋放。

printf("v2 size %lu capacity %lu \n", v2.size(), v2.capacity());

// 不會報錯,

v2[6] = 6;

v2[79] = 79;

v2[80] = 80;

v2[81] = 81;

v2[160] = 160;

// 會報錯 at 會進行邊界檢查

= 6;

= 79;

= 80;

= 81;

= 160;

// 利用 swap 進行交換 ,這個方式可以利用應用在快取佇列中,比如 正常佇列 v1 - > v2 -> v3

//可以做成多級的快取佇列通過 swap的方式來進行各個佇列之間的資料交換

std::vectorv3;

v3.resize(10);

printf("-------------swap 之前 -------------\n");

printf("v2 size %lu capacity %lu \n", v2.size(), v2.capacity());

printf("v3 size %lu capacity %lu \n", v3.size(), v3.capacity());

v3.swap(v2);

printf("-------------swap 之後 -------------\n");

printf("v2 size %lu capacity %lu \n", v2.size(), v2.capacity());

printf("v3 size %lu capacity %lu \n", v3.size(), v3.capacity());

}int main(void)

執行結果如下:

-----------v1-------------

v1 size 1 capacity 1

v1 size 2 capacity 2

v1 size 3 capacity 4

v1 size 4 capacity 4

v1 size 5 capacity 8

v1 size 6 capacity 8

v1 size 7 capacity 8

v1 size 8 capacity 8

v1 size 9 capacity 16

v1 size 10 capacity 16

v1 size 11 capacity 16

v1 size 12 capacity 16

v1 size 13 capacity 16

v1 size 14 capacity 16

v1 size 15 capacity 16

v1 size 16 capacity 16

v1 size 17 capacity 32

v1 size 18 capacity 32

v1 size 19 capacity 32

v1 size 20 capacity 32

--------------------------

------------v2------------

v2 size 21 capacity 40

v2 size 22 capacity 40

v2 size 23 capacity 40

v2 size 24 capacity 40

v2 size 25 capacity 40

v2 size 26 capacity 40

v2 size 27 capacity 40

v2 size 28 capacity 40

v2 size 29 capacity 40

v2 size 30 capacity 40

v2 size 31 capacity 40

v2 size 32 capacity 40

v2 size 33 capacity 40

v2 size 34 capacity 40

v2 size 35 capacity 40

v2 size 36 capacity 40

v2 size 37 capacity 40

v2 size 38 capacity 40

v2 size 39 capacity 40

v2 size 40 capacity 40

v2 size 41 capacity 80

v2 size 42 capacity 80

v2 size 43 capacity 80

v2 size 44 capacity 80

v2 size 45 capacity 80

v2 size 46 capacity 80

v2 size 47 capacity 80

v2 size 48 capacity 80

v2 size 49 capacity 80

v2 size 50 capacity 80

v2 size 51 capacity 80

v2 size 52 capacity 80

v2 size 53 capacity 80

v2 size 54 capacity 80

v2 size 55 capacity 80

v2 size 56 capacity 80

v2 size 57 capacity 80

v2 size 58 capacity 80

v2 size 59 capacity 80

v2 size 60 capacity 80

--------------------------

--------v2.resize(5)------

v2 size 5 capacity 80

-------------swap 之前 -------------

v2 size 5 capacity 80

v3 size 10 capacity 10

-------------swap 之後 -------------

v2 size 10 capacity 10

v3 size 5 capacity 80

C STL中的容器

用c 寫資料結構習題也有一段時間了,不得不說stl容器對資料結構真的很有用。c stl standard template library,標準模板庫 是一套功能強大的 c 模板類,其中包含4個元件,分別為演算法 容器 函式 迭代器。所以想總結一下自己用的容器,為什麼要用它以及怎麼用?c c 原生的...

c STL中的容器

容器作為stl的重要組成部分,其主要包括兩大類 順序容器 和 關聯容器 雖說這二者都是用來儲存資料的資料結構,但是他們的底層實現和特長有很大差別 關聯容器有8種 1 map 紅黑樹 2 set 紅黑樹 3 multimap 紅黑樹 4 multiset 紅黑樹 5 unordered map 雜湊表...

C STL基本容器的使用

c 中有兩種型別的容器 順序容器和關聯容器。順序容器主要有vector list deque等。其中vector表示一段連續的記憶體,基於陣列實現,list表示非連續的記憶體,基於鍊錶實現,deque與vector類似,但是對首元素提供插入和刪除的雙向支援。關聯容器主要有map和set。map是ke...