1、基本概念
vector容器和数组非常相似,在很多时候可以将其看作数组使用
与数组的区别:
1、数组时静态的,即在声明的时候请求的长度不能更改;而vector可以动态扩展,增加或者减少长度
2、数组内数据通常存储在栈上,而vector中数据存储在堆上
2、声明:
//头文件
#include <vector>
//1、默认构造函数vecotr<T> v;
vector<int> v;
//2、将v.begin()到v.end()的元素拷贝
vector<int> v1(v.begin(),v.end());
//3、将n个元素拷贝给自身(可以理解为赋初值)
vec<int> v2(10,9);//含有10个元素空间,每个元素值为9
//4、拷贝
vector<int> v3(v2);
//5、数组转vector
int a[] = {1,2,3,4,5};
vector<int> v4(&a[0],&a[5]);
3、插入和删除
//1、尾部插入元素elem
v.push_back(elem);
//2、删除最后一个元素
v.pop_back();
//3、在迭代器指向的位置iter处,插入一个元素elem
//迭代器声明方法:vecotr<int>::iterator iter;
v.insert(const_iterator iter,elem);
//4、在迭代器指向的位置iter处,插入n个元素elem
v.insert(const_iterator iter,int count,elem);
//5、删除迭代器指向的元素
v.erase(iter);
//6、删除两个迭代器之间的所有元素
v.erase(begin,end);
//7、删除所有值为num的元素
v.erase(remove(v.begin().v.end(),num),v.end());
//8、清空
v.clear();
4、数据访问
vector<int> v;
//1、获得容器长度
v.size();
//2、获得容器容量
v.capacity();
//3、判空
v.empty();
//4、下标访问
v[index];
v.at(index);
//5、第一个元素
v.front();
//6、最后一个元素
v.back();
5、统计和查找
//统计某元素出现次数
int count_num = count(v.begin(),v.end(),num);
//查询是否存在某个元素elem
//查询到返回该元素的迭代器,没有则返回v.end();
//当然也可以使用coun查询,是否大于0
vector<int>::iterator iter=find(v.begin(),v.end());
6、遍历与求和
int sum=0;
//1、下标遍历
for(int i=0;i<v.size();i++)
{
cour<<v[i]<<" ";
sum+=v[i];
}
//2、迭代器遍历
for(vector<int>::iterator iter=v.begin();iter!=v.end();iter++)
{
cout<<*iter;
sum+=(*iter)
}
//3、函数求和
int sum = accumulate(v.begin(),v.end(),0);
//第三个参数为累加初始值
7、最大最小值
//这两个函数返回的是迭代器
int min_v = *min_element(arr.begin(),arr.end());
int max_v = *max_emement(arr.begin(),arr.end());