向量是基于模版的类,它存储相同数据类型的元素。与数组一样的是,向量对象允许通过下标运算符直接访问元素。然而,与数组不同的是,向量保留其大小信息,且提供先关的size()函数,利用此函数可以访问向量的元素个数。向量对象允许在赋值语句任何一边使用下标运算符。
声明向量对象:e.g vector<int> intVector(5)表示长度为5的向量,包含整型数值0.
vector<string> strVector(10);表示长度为10 的向量;每个元素都包含空字符串;
仅用大小参数声明向量类似于数组声明:下面的数组对应向量intVector和strVector
int intArray[5];
string strArray[10];例如:
int intArray[5]={9,5,7,3,4}; int arrsize=sizeof(intArray)/sizeof(int); vector<int> intVector(intArray,intArray+arrsize);
头文件 <vector>
向量的操作主要有:back();返回向量尾部数据项的数值 back()const ;bakck()的常量版本 empty();判断向量是否为空,是返回true,不是返回false push_back();在向量的尾部增加一个数值 pop_back();删除向量尾部的数据项 size()const; 返回向量中元素的数目;
下面是一个结合了插入排序和合并向量的例子:
//此函数产生12个随机数 //如果数值小于400,则将数值加到向量vSmall中 //如果400<=数值<700则将数值加到向量vMedium中 //如果700<=数值<=1000则将数值加到向量vMedium中 //对每个向量进行插入排序 //使用join(),使得三个向量连接起来 //vSmall最终成为一个排序好的表,然后输出新的排序表 #include<iostream> #include<vector> #include<time.h> #include<cstdlib> using namespace std; template<typename T> //合并函数模版 void join(vector<T>&vA,const vector<T>&vB) { int i,sizeB=vB.size(); for(i=0;i<sizeB;i++) //以下标访问vB中的元素,并用push_back()添加到vA中 vA.push_back(vB[i]); } template<typename T>//打印出向量里所有数据 void writeVector(const vector<T> & v) { int i,vsize=v.size(); for(i=0;i<vsize;i++) cout<<v[i]<<" "; cout<<endl; } template<typename T>//插入排序模版函数 void insertionSort(vector<T>&v) { int i,j,n=v.size(); T target; for(i=1;i<n;i++) { j=i; target=v[i]; while(j>0&&target<v[j-1]) { v[j]=v[j-1]; j--; } v[j]=target; } } int main() { srand((int)time(NULL)); //随机函数初始化时间 vector<int>vSmall,vMedium,vLarge; int i,value; for(i=0;i<12;i++) { value=rand()%900+100; //产生100到1000之间的随机数 if(value<400) vSmall.push_back(value); //若小于400,则加到向量vSmall中 else if(value <700) vMedium.push_back(value); //同理 else vLarge.push_back(value); //同理 } insertionSort(vSmall); //排序由范围在100<=n<400中的整数所组成的向量并输出 cout<<"Small : "; writeVector(vSmall); insertionSort(vMedium); //对vMedium向量进行插入排序 cout<<"Medium : "; writeVector(vMedium); insertionSort(vLarge); //对vLarge向量进行插入排序 cout<<"Large : "; writeVector(vLarge); join(vSmall,vMedium); //将向量vMedium连接到修改后的向量vSmall的末尾 join(vSmall,vLarge); //将向量vLarge链接到修改后的向量vSmall的末尾 cout<<"Sorted : "; //输出新的向量 writeVector(vSmall); return 0; }
作者:qq544529563 发表于2013-11-24 0:05:22 原文链接
阅读:52 评论:0 查看评论