資料結構與演算法 陣列與vector

2021-09-11 04:49:31 字數 1505 閱讀 7494

1、概念

基本形式如:int array[100],陣列是最基本的資料結構,是固定大小的相同型別元素的順序集合。儲存在連續的記憶體位址中。

陣列的特點:空間效率利用不高,因為陣列需要預先設定大小;時間效率高,陣列的每個下標對應乙個元素,可以直接取用元素如a[10]表示陣列a的下標為10的元素。

2、初始化

(1)可以直接用{}:int a[10]={},就可以讓a[10]陣列中的所有元素全為0;

(2)也可以{}內包含0:int a[10]={},也可以讓a[10]陣列中的所有元素全為0;

(3){}內寫乙個值只會讓第乙個元素為這個值,後面的依舊是0:int a[3]=,陣列實際上被初始化為陣列初始化為某一固定值

(1)使用(c++)或(c)中的memset()函式,如:

memset(陣列名,值,sizeof(陣列名)),memset(a,1,sizeof(a)) //將a元素初始化為1。

(2)使用中的fill()函式,fill函式可以初始化容器和陣列,如:

fill(begin(),end(),value),fill(a,a+10,5)//將a元素全部變為5。

int a1[3] =   //a1有三個元素分別初始化為1,2,3

int a2 = //a2有三個元素分別初始化為1,2,3

char b1 =   //b1初始化,沒有空字元

char b2 =   //b2初始化,有空字元'\0'

char b3 = "c++"   //b3初始化,結尾有空字元』\0'

string c[3] =    //c初始化為「hello","world"," "

1、概念

vector是stl標準庫的一種容器,是乙個類模板;是動態空間,隨著元素的加入,會自動擴充空間非新元素,因此記憶體空間利用更加靈活,也不用像陣列array一樣指定初始大小。

vector特點:類模板,動態空間,不用指定初始大小,連續的記憶體位址;vector通常分配的空間比需求大,如果新元素加入導致空間不足,vector就會分配一塊更大的記憶體空間用於儲存(先考慮2倍,如果2倍還不夠就會分配更大的記憶體空間),然後將原來的元素全部移動到新分配的更大儲存空間,在釋放原來的記憶體空間。(整個操作涉及:分配新記憶體|資料移動|釋放舊記憶體複雜的操作)。

2、初始化

vectorv1          // 預設初始化

vectorv2(v1)    // 相當於v2=v1

vectorv2=v1

vectorv3(n,val) // v3中含有n個值為val的元素

vectorv4(n)  //v4中含有n個元素

vectorv5 =   

vectorv6

資料結構與演算法 陣列

陣列是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。其中有幾個重要的概念 非線性表 連續的記憶體空間 儲存相同型別的資料 如圖所示,這是乙個長度為5的int陣列arr,我們假設起始的記憶體位址為1000,那麼第乙個元素的記憶體位址範圍就是 1000 1003,這是因為乙...

資料結構與演算法 陣列

題型1 如何用遞迴實現陣列求和 方法1 題型2 如何用乙個for迴圈列印乙個二維陣列 方法1 array在二維陣列中的行號和列號分別為 i maxy i maxy 題型3 用遞迴和非遞迴的方法實現二分查詢 題型4 如何在排序陣列中,找出給定數字出現的次數 方法1 二分查詢,分別找出左邊界和右邊界,左...

資料結構與演算法 陣列

陣列是由相同型別的元素 element 的集合所組成的資料結構,分配一塊連續的記憶體來儲存。利用元素的索引 index 可以計算出該元素對應的儲存位址。維基百科 陣列是線性表資料結構,定義陣列時,系統會分配乙份連續的記憶體空間來儲存一組相同的型別的資料,如int num n 陣列定義為一維陣列 二維...