vector, 向量c的用法是什么?不知道小伙伴們今天來(lái)看看邊肖的分享吧!Vector是一種向量類(lèi)型,可以容納很多類(lèi)型的數(shù)據(jù),比如幾個(gè)整數(shù),所以叫容器。
Vector是C STL的重要成員。使用它時(shí),需要包含頭文件:
#includevector;
第一,向量的初始化
(1)向量a(10);//定義10個(gè)整數(shù)元素(尖括號(hào)中的元素類(lèi)型名稱(chēng),可以是任何合法的數(shù)據(jù)類(lèi)型)的向量,但不給出初始值,其值不確定。
#includeiostream
#includemath.h
#includevector
using namespace std;
int main()
{
vectorint a(10);
for(int i=0;ia.size();i++)
couta[i] ;
return 0;
}
(2)向量a(10,1);//定義一個(gè)10個(gè)整數(shù)元素的向量,每個(gè)元素的初始值給定為1。
試驗(yàn)
#includeiostream
#includemath.h
#includevector
using namespace std;
int main()
{
vectorint a(10,1);
for(int i=0;ia.size();i++)
couta[i] ;
return 0;
}
(3)向量a(b);//使用B向量創(chuàng)建A向量,并分配整個(gè)副本。
測(cè)試:
#includeiostream
#includemath.h
#includevector
using namespace std;
int main()
{
vectorint b(10,3);
vectorint a(b);
for(int i=0;ia.size();i++)
couta[i] ;
return 0;
}
(4)向量a(b.begin(),b . begin 3);//定義了第0到第2個(gè)(共3個(gè))元素測(cè)試,值為b:
#includeiostream
#includemath.h
#includevector
using namespace std;
int main()
{
vectorint b;
for(int i=0;i10;i++)
b.push_back(i);
向量a(b.begin(),b . begin()3);//用值b定義第0到第2(共3)個(gè)元素。
for( i=0;ia.size();i++)
couta[i] ;
return 0;
}
(5)int b[7]={1,2,3,4,5,9,8 };
向量a(b,B7);//從數(shù)組中獲取初始值,從B開(kāi)始,一共七個(gè)。
測(cè)試:
#includeiostream
#includemath.h
#includevector
using namespace std;
int main()
{
int b[7]={1,2,3,4,5,6,7};
向量a(b,B7);//從數(shù)組中獲取初始值,從B開(kāi)始,共7!
for( int i=0;ia.size();i++)
couta[i] ;
return 0;
}
其次,vector對(duì)象的幾個(gè)重要操作說(shuō)明如下:
(1)a.assign(b.begin(),b . begin()3);//b是一個(gè)向量,由b的0~2個(gè)元素組成的向量賦給a。
(2)a .賦值(4,2);//是的,A只包含4個(gè)元素,每個(gè)元素是2。
a . back();//返回的最后一個(gè)元素。
a . front();//返回的第一個(gè)元素。
(5)a[I];//當(dāng)且僅當(dāng)a[i]存在時(shí),返回A的第I個(gè)元素。
(6)a . clear();//清除中的元素。
(7)a . empty();//判斷A是否為空,為空則返回ture,不為空則返回false。
(8)a . pop _ back();//刪除A向量的最后一個(gè)元素
(9)a.erase(a.begin() 1,a . begin()3);//刪除A中的第1個(gè)(從0開(kāi)始計(jì)數(shù))到第2個(gè)元素,
也就是說(shuō),被刪除的元素從a.begin() 1(包括它)開(kāi)始計(jì)數(shù)到a.begin() 3(不包括它)。
(10)a . push _ back(5);//在a的最后一個(gè)向量后插入一個(gè)值為5的元素。
(11)a.insert(a.begin() 1,5);//在A的第一個(gè)元素(從第0個(gè)開(kāi)始計(jì)數(shù))的位置插入值5,如A為1,2,3,4,插入元素后為1,5,2,3,4。
(12)a.insert(a.begin() 1,3,5);//在A的第一個(gè)元素的位置插入3個(gè)數(shù)字(從0開(kāi)始計(jì)數(shù)),它們的值都是5。
(13)a.insert(a.begin() 1,b 3,b 6);//b是一個(gè)數(shù)組。在A的第一個(gè)元素的位置(從0開(kāi)始計(jì)數(shù))插入B的第三個(gè)元素到第五個(gè)元素(不包括b 6)。
比如B是1,2,3,4,5,9,8,插入元素后是1,4,5,9,2,3,4,5,9,8。
(14)a . size();//返回中的元素?cái)?shù);
(15)a . capacity();//返回內(nèi)存中可以容納的元素總數(shù)。
(16)a . resize(10);//將A的現(xiàn)有元素?cái)?shù)調(diào)整為10,如果刪除的元素多,如果添加的元素少,則值是隨機(jī)的。
(17)a.resize(10,2);//將A的現(xiàn)有元素?cái)?shù)調(diào)整為10,如果刪除的元素多,如果添加的元素少,則值為2。
(18)a .儲(chǔ)備(100);//將A的容量擴(kuò)展到100,
也就是說(shuō)現(xiàn)在測(cè)試a . capacity();返回值是100。這個(gè)操作只有在你需要給A添加大量數(shù)據(jù)的時(shí)候才有意義,因?yàn)檫@樣會(huì)避免內(nèi)存的多次擴(kuò)容操作(當(dāng)A的容量不足時(shí),電腦會(huì)自動(dòng)擴(kuò)容,
當(dāng)然,這必然會(huì)降低性能)
(19)a .互換(b);//b是一個(gè)向量,A和B中的元素整體交換。
(20)a==b;//b是向量,向量的比較運(yùn)算還是可以的!=,=,=,
三、按順序訪問(wèn)向量的幾種方法,例如,如下:
(1)向向量a添加元素
1、利用push_back()
vectorint a;
for(int i=0;i10;i++)
a.push_back(i);
2、也可以從數(shù)組中選擇元素向向量中添加
int a[6]={1,2,3,4,5,6};
vectorint b;
for(int i=1;i=4;i++)
b.push_back(a[i]);
3、也可以從現(xiàn)有向量中選擇元素向向量中添加
int a[6]={1,2,3,4,5,6};
vectorint b;
vectorint c(a,a+4);
for(vectorint:iterator it=c.begin();itc.end();it++)
b.push_back(*it);
4、也可以從文件中讀取元素向向量中添加
ifstream in(data.txt);
vectorint a;
for(int i; ini)
a.push_back(i);
5、【誤區(qū)】
vectorint a;
for(int i=0;i10;i++)
a[i]=i;
//這種做法以及類(lèi)似的做法都是錯(cuò)誤的。剛開(kāi)始我也犯過(guò)這種錯(cuò)誤,后來(lái)發(fā)現(xiàn),下標(biāo)只能用于獲取已存在的元素,而現(xiàn)在的a[i]還是空的對(duì)象
(2)從向量中讀取元素
1、通過(guò)下標(biāo)方式讀取
int a[6]={1,2,3,4,5,6};
vectorint b(a,a+4);
for(int i=0;i=b.size()-1;i++)
coutb[i] ;
2、通過(guò)遍歷器方式讀取
int a[6]={1,2,3,4,5,6};
vectorint b(a,a+4);
for(vectorint:iterator it=b.begin();it!=b.end();it++)
cout*it ;
vector,以上就是本文為您收集整理的vector最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。