C 中vector動態陣列

2021-08-04 11:06:54 字數 3188 閱讀 5685

目錄

0.寫在前面

1.基本操作

2.需求實現

2.1 reverse翻轉vector中元素

2.2 使用sort排序

2.3 列印vector的方式

2.4 構造乙個陣列,並且封裝為vector

3.vector作為引數的三種傳參方式(傳值 && 傳引用 && 傳指標)

4.vector中begin(),end(),front(),bck()區別

陣列並不是很適用於各種情況,當涉及到記憶體占用的時候,陣列可能就沒有vector的優勢了,而vector,動態陣列,比較適合某些情況。

vector::iterator it;

for(it=vec.begin();it!=vec.end();it++)

cout<<*it《使用reverse將元素翻**需要標頭檔案#include

reverse(vec.begin(),vec.end());將元素翻轉,即逆序排列

#include #include #include #include using namespace std;

void print_vec(vector&vec)

int main(void)

; //定義乙個vec,並且初始化為

print_vec(vec);

reverse(vec.begin(), vec.end()); //使用reverse(algorithm中函式)

print_vec(vec);

return 0;

}

可以使用algorithm中sort函式,預設是公升序從小到大,可以通過自定義比較器,實現從大到小逆序排序。

#include #include #include #include using namespace std;

void print_vec(vector&vec)

bool comp(const int &a, const int &b)

int main(void)

; //定義乙個vec,並且初始化為

print_vec(vec);

sort(vec.begin(), vec.end()); //使用預設的sort公升序

print_vec(vec);

sort(vec.begin(), vec.end(), comp); //自己構造比較器,實現逆序,從大到小排序

print_vec(vec);

return 0;}/*

輸出結果:

開始列印vec:

1 7 2

開始列印vec:

1 2 7

開始列印vec:

7 2 1

*/

#include #include #include #include using namespace std;

void print_01(vector&vec)

void print_02(vector&vec)

void print_03(vector&vec)

cout << endl;

}int main(void)

; //定義乙個vec,並且初始化為

print_01(vec);

print_02(vec);

print_03(vec);

return 0;}/*

print_01開始列印vec:

1 7 2

print_02開始列印vec:

1 7 2

print_03開始列印vec:

1 7 2

*/

int nums[4] = ;

vectorvec(nums, nums + 4);

c++中常用的vector容器作為引數時,有三種傳參方式,分別如下:

注意,三種方式分別有對應的const形式,不在此討論。

三種方式對應的呼叫形式分別為:

三種方式的效果分別為:

#include #include #include #include using namespace std;

vectortwosum(vector&nums, int target);}

int main(void)

; vectorvec(nums, nums + 4);

int target = 9;

vectorres = twosum(vec, target); //這個是vector的傳引用

//cout << vec << endl;//不能直接cout乙個vector

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

cout << res[i] << " ";

return 0;

}

向量容器(vector)是一種順序容器,是一塊連續分配的記憶體,支援隨機訪問,從資料安排的角度看,和陣列極其相似,陣列跟vector的區別在於:陣列是靜態分配空間,一旦分配了空間的大小,就不可以再改變了,例如,int a[6];而vector是動態分配記憶體,隨著元素的不斷插入,它會按照自身的一套機制不斷擴充自身的容量,vector容器的容量增長是按照容器現在容量的一倍進行增長。

begin函式:

函式原型:

iterator begin();

const_iterator begin();

功能:返回乙個當前vector容器中起始元素的迭代器。

end函式:

函式原型:

iterator end();

const_iterator end();

功能:返回乙個當前vector容器中末尾元素的迭代器。

front函式:

函式原型:

reference front();

const_reference front();

功能:返回當前vector容器中起始元素的引用。

back函式:

函式原型:

reference back();

const_reference back();

功能:返回當前vector容器中末尾元素的引用。

C 動態陣列vector實現

最近在做將matlab 轉化為c c 的工作,在實際應用時,發現動態陣列非常重要,我在學習的時候也踩了許多坑,這篇就當做一篇踩坑筆記,希望讀者能夠繞開我踩過的坑,順利應用動態陣列。其實在c語言中,都是靜態陣列,即需要在定義的時候就定下該陣列的長度,然而這在實際的應用中,很大的一部分情況是我們並不知道...

VECTOR動態陣列

vector是同一種型別的物件的集合 vector的資料結構很像陣列,能非常高效和方便地訪問單個元素 vector是乙個類模板 class template 要使用vector必須包含相關標頭檔案 include using std vector 注 空間是連續的 空間是可以擴充套件的 貌似是矛盾的...

Vector 動態陣列

容器 順序式容器 vecto 動態陣列,從末尾快速插入刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入刪除 deque 雙向佇列,從前面與後面快速插入刪除,直接訪問任何元素 priority queue 優先佇列,最高優先順序元素總是最先出列 stack 棧,後進先出 先進後出 關聯式容...