定义:向量类似动态数组,(也就是可以随机增加不同类型的数据,不用定义长度),并实现对数组元素的随机访问,支持尾部的快速插入和删除。
基本操作
1.定义
vector vec;//用于保存类型为T的向量vec
vectorvec(int n);//可以保存n个类型为T的向量vec
vectorvec(int n,T t);//保存n个类型为T且初值为t的向量vec
vectorvec(vector);//拷贝构造函数
注:T可以为任何数据类型,或者一个类。
例如:
vector <Student> vec;//定义一个数据类型为Student性的向量
Student myss("zhangsan",18,'M',01);
myss.input();
vec.push_back(myss);
vector <Base*> my;//定义一个类型数据类型为指针的向量
Base *mys=new Student("zhangsan",18,'M',01);
mys->input();
my.push_back(mys);
Base *myt=new Teacher("wangwu",34,'F',4000);
myt->input();
my.push_back(myt);
2.重要操作
vce.assgin(10,5);//给10个对象赋值都为5
vec.assgin(vec1.bengin(),vec1.begin()+3);//将向量vec1的第一个到第三个元素赋给vec
vec.push_back(3);//将3追加到向量尾
vec.at(i);//取位置为i出的元素,下标从0开始计算
vec.erase(i);//删除向量第i个元素(i是删除元素的位置,取其地址)
vec.erase(m,n);//删除向量第m到第n个元素
vec.pop_back();//弹出向量序列最后一个元素
vec.empty();//判断向量是否为空
vec.size();//返回向量的大小
3.迭代器
vector::iterator it;//定义迭代器
vec.begin();//返回指向容器的起始位置的迭代器
vec.end();//返回指向容器的结尾位置的迭代器
vec.insert(it,&x);//在迭代器it出插入对象x,返回指向新插入的迭代器
vec.insert(it,n,&x);//在迭代器it出插入n个对象x,返回空值类型
vec.insert(it,it1,it2);//在迭代器it出插入it1和it2所确定的序列
例如:
vector<int> num(10);
num.assign(10,5);
num.push_back(7);
int x=6;
vector<int>::iterator it;
it=num.begin()+3;
it=num.insert(it,x);
cout<<num.at(2)<<endl;
cout<<num.at(3)<<endl;
cout<<num.at(11)<<endl;
综合使用
1.输出向量里的所有元素
vector<int> vec(5,2);
vector<int>::iterator it;
vector<int>::iterator it1;
vec.push_back(6);//追加
it=vec.begin();
vec.insert(it,4);//插入
it1=vec.begin()+2;
vec.erase(it1);//删除
for(it=vec.begin();it!=vec.end();it++)//输出
cout<<(*it)<<"\t";