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...