vector作為stl提供的標準容器之一,是經常要使用的,有很重要的地位,並且使用起來也是灰常方便。vector又被稱為向量,vector可以形象的描述為長度可以動態改變的陣列,功能和陣列較為相似。實際上更專業的描述為:vector是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫,vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。
那麼vector和陣列的主要區別
陣列:分配的是靜態空間,一般分配了就不可以改變,就像我們熟知的定義了乙個陣列,那麼陣列的長度就不可以改變了,我們也不可以進行越界訪問,但是編譯器不檢查越界,這一點在我們程式設計的時候要尤為注意(很多都可能會煩這樣的錯誤!!)。一般申請的陣列長度不能滿足我們的要求了,我們要重新申請大一點陣列,然後把原陣列中資料複製過來。
vector:分配的是動態空間,即:我們發現在宣告vector容器的時候也可以不指定容器的大小,vector是隨著元素的加入,空間自動擴充套件的。但是,我們必須要負責任的肯定vector分配的空間是連續的,也就是支援陣列中的下標隨機訪問,實際上vector的實現機制是:預留一部分空間,而且預留空間的大小是按一定比率增長的,如果空間不夠用的話,要保證連續,就必須重新new一片空間,然後將原有元素移動到新空間,同時預留新的空間(並且新分配的空間比原來分配的空間),最後將原來的那部分空間釋放掉。這樣預留空間的好處就是不用每次向vector中加元素都重新分配空間。
下面為結果#include
#include
using
namespace
std;
int main()
; vector
v1;vector
::iterator iter;
//插入元素
v1.insert(v1.begin(),2,1);//從下標為0開始插入兩個1,結果為 1 1
v1.insert(v1.begin(), a, a + 3);//從下標為0開始插入從a[0]到a[3]前面的元素,即插入a[0],a[1],a[2],結果為2 3 4 1 1
cout
<< "容量為:"
<< v1.capacity() << endl;
cout
<< "長度為:"
<< v1.size() << endl;
v1.insert(v1.begin()+5,2,5);//從下標為5開始插入兩個5,結果為2 3 4 1 1 5 5
v1.push_back(0);//尾插
cout
<< "data: ";
for (iter = v1.begin(); iter != v1.end(); ++iter)
cout
<< *iter << " ";
cout
<< endl <
/2 3 4 1 1 5 5 0
cout
<< "長度為:"
<< v1.size() << endl;
//刪除元素
v1.erase(v1.begin(),v1.begin()+2);//刪去下標為0,1的,也就是刪去2,3.剩下為4 1 1 5 5 0
v1.erase(v1.begin()+1);//刪去下標為1的,也就是刪去1,剩下為4 1 5 5 0
v1.pop_back();//尾刪 結果為4 1 5 5
cout
<< "data: ";
for (iter = v1.begin(); iter != v1.end(); ++iter)
cout
<< *iter << " ";
cout
<< endl << "容量為:"
<< v1.capacity() << endl;
cout
<< "長度為:"
<< v1.size() << endl;
v1.clear();//清空資料
cout
<
<< endl;
cout
<
<< v1.capacity() << endl;
cout
<
<< v1.size()
();//釋放記憶體
cout
<< "v1.~vector()後"
<< endl;
cout
<< "容量為:"
<< v1.capacity() << endl;
cout
<< "長度為:"
<< v1.size() << endl;
if (v1.empty())//判斷vector是否為空
cout
<< "vector為空";
return
0;}
vector容器簡單例子
stl六大元件 容器,演算法迭代器,空間配置器,介面卡,仿函式 vector容器 連續的儲存空間,雙向,隨機,單口容器,只能在一端進行插入刪除 例子 define crt secure no warnings include include using namespace std void prin...
C STL中vector容器類的簡單操作
vector是c 標準模板庫中的部分內容,它是乙個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。vector之所以被認為是乙個容器,是因為它能夠像容器一樣存放各種型別的物件 簡單地說,vector是乙個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。vector容器類的基本操作有 1 標頭...
使用STL的vector容器類
範例程式 include include include include include using namespace std int main char b size 定義vector物件 vectorvf a,a size vectorvc b,b size sizef vf.size siz...