标准库Vector类型

使用需要的头文件:

#include <vector>

Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。

一、 定义和初始化

Vector v1; //默认构造函数v1为空

Vector v2(v1);//v2是v1的一个副本

Vector v3(n,i);//v3包含n个值为i的元素

Vector v4(n); //v4含有n个值为0的元素

二、 值初始化

1> 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。

2> 如果保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。

3> 如果保存的式没有构造函数的类类型的元素,标准库产生一个带初始值的对象,使用这个对象进行值初始化。

三、Vector对象最重要的几种操作

  1. v.push_back(t) 在数组的最后添加一个值为t的数据

  2. v.size() 当前使用数据的大小

  3. v.empty() 判断vector是否为空

  4. v[n] 返回v中位置为n的元素

  5. v1=v2 把v1的元素替换为v2元素的副本

  6. v1==v2 判断v1与v2是否相等

  7. !=、<、<=、>、>= 保持这些操作符惯有含义

四、简单程序示例:读一组数据到vector对象,计算并输出每对相邻元素的和。如果读入元素个数为奇数,则提示用户最后一个元素没有求和,并输出其值。

#include <iostream>
#include <vector>
using namespace std;
int main()
{
   
 vector<int> ivec;
 int ival;

 //读入数据到vector对象
 cout<<"Enter numbers(Ctrl+Z结束)"<<endl;
 while(cin>>ival)
  ivec.push_back(ival);

 //计算相邻元素的和并输出
 if(ivec.size()==0)
 {
   
  cout<<"No element?!"<<endl;
  return -1;
 }
 cout<<"Sum of each pair of adjacent elements in the vector:"<<endl;
 for(vector<int>::size_type ix=0;ix<ivec.size()-1;ix+=2){
   
  cout<<ivec[ix]+ivec[ix+1]<<'\t';
 if((ix+1)%6==0)
  cout<<endl;
 }

 if(ivec.size()%2!=0)
  cout<<endl<<"The last element is not summed and its value is "<<ivec[ivec.size()-1]<<endl;

 return 0;
}