總集 C STL類庫 vector 使用方法

2021-09-12 17:15:47 字數 2276 閱讀 8631

1.vector 的中文名為向量,可以理解為乙個序列容器,裡面存放的是相同的資料結構型別,類似於陣列但與陣列又有微妙的不同。

2.vector 採用的是連續動態的空間來儲存資料,它是動態的陣列,它不僅可以使用下標訪問每乙個位置的資料,還可以對它的長度進行改變,十分的靈活。但是它的靈活也是有代價的,我們都知道,陣列在記憶體中的長度是開始宣告的時候就已經確定好了,要改變長度,就意味著需要重新的去申請空間,再將需要的元素移動到這個空間中,在釋放原來的空間,但是 vector 對記憶體的處理或許並不是這樣的,無論我們加多少個值或是刪除多少個值來改變 vector 的 size,vector 的頭位址始終是不變的,這可能和它的內部實現有關,在這裡我也不追究了。

3.vector 同時也有許多的函式方法可以呼叫,方便我們的資料處理以及記憶體空間的管理。

4.vector 與其他的序列容器相比 (list, forward_lists, deque 等),vector 適合於隨機的訪問元素,在需要很多隨機增刪操作的情況下,或許 vector 就沒有那麼的好用了。

5.vector 在大多數的情況下還是作為動態來使用,一般用來求解線性的題目。

首先需要包含標頭檔案

例項化乙個 vector:因為 vector 是乙個模板類,在例項化的同時我們需要給出資料型別。如:

std::vectorv1;//例項化乙個存放 int 型資料的 vector,其 size() 為 0,初始值為 0;

std::vectorv2(5,1);//例項化乙個 size() 為 5 的 vector,且資料的初始值為 1;

std::vectorv3(v2);//例項化乙個與 v2 相同的 vector,而且可以使用迭代器或數值來確定乙個範圍。

std::vectorv3 = v2;//同上

如果**中包含了 using namespace std; 則可以不寫 std:: 字首。

emplace_back() 能夠通過引數構造物件,不需要拷貝或者移動記憶體,相比於 push_back() 能更好地避免記憶體的拷貝與移動,使容器插入元素的效能得到進一步提公升。由此,在大多數情況下應該優先使用 emplace_back() 來代替 push_back()。

翻轉 vector:reverse(v1.begin(),v1.end());

對 vector 進行排序:sort(v1.begin(),v1.end());//從小到大

sort(v1.begin(),v1.end(),comp);//從大到小

copy(v1.begin(),v1.end(),v2.begin()+1);//把從 v1[0] 到 v1[size()-1] 的資料複製到 v2[1] 中

find(v1.begin(),v1.end(),10);//在 v1[0] 到 v1[size()-1] 中尋找值為 10 的數

v1.assign(v2.begin(),v2.begin()+3);

v1.assign(5,3);

v1.front();

v1.back();

vector::iterator=v1.begin();

vector::iterator=v1.end();

v1.at(3);

v1.empty();

v1.clear();

v1.push_back(5);

v1.emplace_back(5);

v1.insert(v1.begin()+1,5);//在v1的第乙個位置插入值為5的資料

v1.insert(v1.begin()+1,3,5);//在v1的第乙個位置插入3個值為5的資料

v1.insert(v1.begin()+1,v2.begin(),v2.end());//在v1的第乙個位置插入v2

v1.emplace(v1.begin(),5);//在v1的頭部插入值為5的資料

v1.pop_back();

v1.erase(v1.begin()+3);

v1.erase(v1.begin()+1,v1.begin()+3);

v1.size(5);

v1.resize(10);

v1.resize(10,6);//假如v1原來為,執行**後為

v1.capacity();

v1.swap(v2);

v1==v2;

v1=v2;

v1>v2;

v1提醒一下:迭代器 v1.begin() 到 v1.end() 的範圍是 v1[0] 到 v1[v1.size()-1]。例如假設:v1.size()=5,則 v1.begin() 到 v1.end() 的範圍是  v1[0] 到 v1[4],它是乙個左閉右開的區間。

c STL標準模板庫 vector容器

vector是stl標準模板庫中的乙個容器,可以容納不同的資料型別,並且資料可以自動向前增長,因此稱之為向量,vector是乙個序列式容器,裡面的底層實現是乙個順序表結構 1.資料自動初始化為0 2.可以動態增長長度 相比與陣列強大太多,可以用vector取代陣列 3.支援隨機訪問資料 4.對記憶體...

C STL模板庫之vector的用法

大部分容器都有的成員 x為容器型別,如vector t為儲存在容器中的型別 型別值 x value type t,元素型別 x reference t x const reference const t x iterator 指向t的迭代器型別,行為與t 相似 x const iterator 指向...

C STL標準模板庫之容器vector

vector是stl標準模板庫中的重要容器之一,可以通過設定來存放各種不同型別的資料,在stl中vector的實現方式是類模板,這些模板的引數允許我們指定容器中元素的資料型別,在結構上更加靈活,並且能夠避免重複編碼。在工程中建立乙個vector物件,在vector上右鍵轉到定義,可以找到vector...