向量(vectors) ios
Vector是向量類型,是一種對象實體,使用它時,只要加上頭文件<vector>便可。 數組
Vector能夠有四種定義方式: 函數
(1)vector<int> a(10); spa
(2)Vector<int>b(10,1); 設計
(3)Vector<int>c(b); 對象
(4)Vector<int>d(b.begin(),b.begin()+3) it
Vector<int>是模板形式,其中尖括號內能夠是任何合法的數據類型,在此表示一個整數向量, io
(1)定義了十個整數元素的向量,但沒有給出初值,因此其值是不肯定的 模板
(2)定義了十個整數元素的向量,且每一個元素初值是1,和明顯這種定義方式遠遠優於數組 程序設計
(3)是用另外一個現成的向量來建立一個向量
(4)定義了其值依次爲b向量的第0個到第2個(共3個)元素的向量
所以,向量能夠選擇另外一個向量的一部分進行復制。
特別的,向量還能夠從數組得到初值,例如:
int a[7]={1,2,3,4,5,6,7};
Vector<int> va(a,a+7);
上面第四種形式的b.begin()和b.end()表示向量起始元素的位置和最後一個向量元素以外的位置,向量元素位置也屬於一種類型,稱爲遍歷器,遍歷器不單表示元素位置,還能夠在容器中先後挪動。每種容器都有對應的遍歷器,向量的遍歷器類型爲vector<int>::iterator。
所以,輸出向量的元素有兩種方式,
for(int i=0;i<a.size;i++) 第一種
cout<<a[i]<<」 」;
for(vector<int> it=a.begin();it!=a.end();it++) 第二種
cout<<*it<<」 」;
a.begin()表示向量的第一個元素,這種方式稱爲一個對象捆綁一個函數調用,表示對該對象進行某種操做,相似這樣的使用方式稱爲調用對象a的成員函數,這種方式在對象程序設計中很廣泛,向量中的操做都是經過成員函數完成的。
它的經常使用操做有
a.assign(b.begin(),b.begin()+3); //將向量b的0-2元素構成向量賦值給a
a.assign(4,2); //使a向量只含0-3元素,且均賦值2
Int x=a.back(); //將向量a的最後一個元素賦值給整數x
a.clear(); //將向量a清空
If(a.empty())cout<<」empty」; //a.empty()經常使用做判斷條件,它判斷向量空否
int y=a.front(); //將a的第一個元素賦值給y
a.pop_back(); //刪除最後一個元素
a.push_back(10); //在向量最後插入一個元素,其值爲10
a.resize(10); //將向量元素調至10個元素,多則刪,少則補,其值不肯定
a.resize(10,2); //將向量元素調至10個,多則刪,少則補,其值爲2
if(a==b)cout<<」equal」; //向量能夠比較,!=,<等。
//======================================================== //判斷yy.txt中有多少對兩兩相等的整數(yy.txt中有若干個整數) //======================================================== #include <iostream> #include <fstream> #include <vector> using namespace std; int main() { ifstream in("yy.txt"); vector<int> v; for(int a;in>>a;) v.push_back(a); int pair=0; for(int i=0;i<v.size()-1;i++) for(int j=i+1;j<v.size();j++) if(v[i]==v[j]) pair++; cout<<pair<<endl; }