向量(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; }