vector容器
vector介绍:
1.vector是STL标准库中的容器
2.是一个序列式容器
3.里面的底层实现是一个顺序表结构
4.可以动态增长长度的数组
vector的特性:
1.数据自动初始化为0
2.可以动态增长长度(如下图所示)
int n=10;
vector<int> vec2(n)={1,2,3,4,5,6,7,8,9,10,};
3.支持随机访问数据
4.对内存边界进行检查
5.自动进行内存的申请和释放
6.vector可以进行自动的进行内存管理,从申请到释放都交给vector底层机制实现,从而程序员在这里插入代码片不用关心内
存的申请释放
迭代器:迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭代器指定容器中的一定范围的对象。迭代器就如同一个指针。迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象;我对迭代器的理解:是一种类的封装。比指针更加安全,不会产生越界。
关于容器的一些函数:
vector数据的访问操作:
vector<int> vi(10)={1,2,3,4,5,6,7,8,9,10,};
vi.front();//获取头部元素
vi.back();//获取尾部元素
vi.at(3);//相当于[]
int *p=vi.date();//返回数组指针
vi.begin();//迭代器首地址
vi.end();//迭代器结束地址;
vector数据的内存分配:
//初始化一个vector容器;
vector<int> vec={1,2,3,4,5,6,7,8,9,10,};
//动态初始化一个vector容器;
int n=10;
vector<int> vec2(n)={1,2,3,4,5,6,7,8,9,10,};
//打印一个vector容器;
vec.at(3);
//输出所有vector容器里的数据;
for(auto i:vec)
{
cout<<i<<endl;
}
//使用尾插的方法,把数据存入vector中
vec.push_back(2);
//将尾部数据删除;
vec.pop_back();
vec.insert(vec.begin(), 20);//在第一个位置上插入一个值为20的数
vec.insert(vec.begin()+3, 33);//在第四个位置上插入值为33的数
vec.erase(vec.begin()+3);//擦除第四个元素;
vec. size(); //获取当前大小
vec.resize(60);//重新调整大小;
vec.assign(20, 666);//重新分配内存,有重新构造的特点;重新分配长度一定要指定填充数据;
vec.capacity();//获取世纪的内存空间大小;
vec.reserve(59);//修改实际内存大小;
vec.clear();//清除所有数据;
vector 兼容C语言:
vector的特性非常强大了,但是,我们很多情况要使用c语言的数组,可能旧的函数和接口需要调用C语言的
数组函数
data()函数,返回C语言的指针:
int *p=vi.date()
//通过首地址和尾地址,进行拷贝原来的数组
int arr[10] = { 98, 21, 654, 78, 6, 54, 21, 32, 65, 12 };
vector<int> vec2(arr,arr+10);
总结
1.vector的初始化与使用
2.与c的兼容
3.函数
4.迭代器的理解
5,代码的流畅性
6.复习vector迭代器与兼容c的用法。