一.vector的介绍
1.是一个序列式容器
2.底层实现是一个顺序表结构
3.可以动态增长长度的数组
4.支持随机访问,越界会抛出异常
二.vector的使用
#include<vector>
vector<int> vec; //定义一个存储int类型的数组容器,会自动赋值为0
vector<int> vec2(10); //创建一个vector对象,默认长度为10
vector<int> vec3={1,2,3,4,5,6,7,8,9,10};
vector<int> vec4(10,1); //默认长度为10,会自动赋值为1
三.vector的功能
//两种访问
vector<int> vec;
cout<<vec.at(1);
cout<<vec[1]<<endl;
//迭代器 是一个类中类
begin //指向首地址(有数据)
end //指向尾地址(无数据)
vector<int> v={1,2,3,4,5,6,7,8,9,10};
vector<int>::iterator it=v.begin(); //创建一个迭代器,指向vector容器中的首地址
cout<<*it<<endl;
for(auto it=v.brgin();it!=v.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
三.vector输出重载
template<typename T>
ostream& operator<<(ostream&cout,const vector<T> v)
{
if(v.empty()) //判断是否为空
{
cout<<"容器为空"<<endl;
}
for(auto e:v)
{
cout<<e<<" ";
}
cout<<endl;
return cout;
}
四.vector兼容c语言
vector<int> vec={1,2,3,4,5,6,7,8,9,10};
out(vec.data(),vec.size()); data()返回一个C语言指针类型
//C语言的数据也可以复制给vector
int arr[10]={1,2,3,4,5,6,7,8,9,10};
//参数:首地址 ,尾地址
vector<int> c2v(arr,arr+10);
cout<<c2v<<endl;
五.vector的基本函数
vector<int> vec={1,2,3,4,5,6,7,8,9,10};
vec.push_back(11); //从尾部插入一个数据
vec.pop_back(); //从尾部删除一个数据
vec.insert(vec.begin()+5,99); //从指定位置插入一个数据
vec.erase(vec.begin()+3); //在指定位置上擦除一个元素
vec.size(); //当前的长度为
vec.resive(20); //新添加的数据会自动补充为零
vec.assign({1,2,3,4,5,6,7,8}); //重新初始化
vec.assign(99,10);
vec.capacity(); //获取实际的内存空间
vec.clear(); //清除所有数据
vec.at(); //获取位置的元素
vec.front() //获取头部元素
vec.back() //获取尾部元素
vec.data() //返回一个指针类型
vec.begin() //迭代器首地址
vec.end() //迭代器尾地址
vec.rbegin() //反向迭代器
vec.rend() //反向迭代器结束地址