Vector容器
Vector容器
一、 简介
vector 是将元素置于一个动态数组中加以管理的容器
vector可以随机存取元素(支持索引值直接存取,用[]操作符或at()函数)
注:vector尾部添加或移除元素非常快,但是在中部头部插入元素或移除元素比较费时
二、 废话不多说,代码走起
1. vector对象的初始化
使用stl提供的vector,引用头文件 #include "vector"
//vector的初始化
vector<int> v;
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(7);
vector<int> v2 = v; //对象初始化
vector<int> v3(v.begin(),v.begin() + 2); //对象初始化 值 1 3
2. 尾部添加弹出元素、获取头部元素、尾部元素
vector<int> v1;
cout<< "length : " <<v1.size() <<endl; //获取vector的大小
v1.push_back(1); //尾部添加数据 1
v1.push_back(3); //尾部添加数据 3
v1.push_back(5); //尾部添加数据 5
cout<< "length : " <<v1.size() <<endl;//获取vector的大小
v1.front();//获取头部元素
v1.back();//获取尾部元素
//循环vector
while(v1.size() > 0)
{
cout << "尾部元素" << v1.back() <<endl; //打印每个元素
v1.pop_back();//删除尾部元素
}
//修改头部元素
//函数返回值当左值,应该返回一个引用
v1.front() = 12;
v1.back() = 78;
//再次循环vector
while(v1.size() > 0)
{
cout << "尾部元素" << v1.back() <<endl; //打印每个元素
v1.pop_back();//删除尾部元素
}
3. vector的遍历:通过数组的方式
//遍历vector 通过数组的方式
vector<int> v1(10); //特别提示:提前把内存准备好
//给vector赋值
for ( int i = 0 ; i < 10 ; i++ )
{
v1[i] = i + 1;
}
for (int j = 0 ; j < 10 ; j++)
{
printf("%d ",v1[j]);
}
push_back强化
vector<int> v1(10);//特别提示:提前把内存准备好,初始化vector个元素默认值为0
v1.push_back(100);
v1.push_back(200);
cout<< "size:" << v1.size() <<endl; //结果:12
//push_back总结:在vecotr元素的后面添加元素
4. vector的遍历:通过迭代器的方式
vector<int> v1(10); //特别提示:提前把内存准备好
//给vector赋值
for ( int i = 0 ; i < 10 ; i++ )
{
v1[i] = i + 1;
}
//正向遍历
for(vector<int>::iterator it = v1.begin() ; it != v1.end() ; it++)
{
cout << *it << " ";
}
//逆序遍历
for(vector<int>::reverse_iterator rit = v1.rbegin() ; rit != v1.rend() ; rit++)
{
cout << *rit << " ";
}
迭代器的种类
只读迭代器,如
vector<int>::const_iterator 与 vector<int>::const_reverse_iterator
5. vector的删除操作
vector<int> v1(10); //特别提示:提前把内存准备好
//给vector赋值
for ( int i = 0 ; i < 10 ; i++ )
{
v1[i] = i + 1;
}
//区间删除
v1.erase(v1.begin() , v1.begin() + 3);
for(vector<int>::iterator it = v1.begin() ; it != v1.end() ; it++)
{
cout << *it << " ";
}
//根据元素位置 指定位置删除
v1erase(v1.begin()); //在头部删除一个元素
//根据元素的值
v1[1] = 2;
v1[3] = 2;
for( vector<int>::iterator it = v1.begin(); it != v1.end();) //注:it++删除
{
if(*it == 2)
{
v1.erase(it); //当删除迭代器所指向的元素的时候,erase函数会让it自动下移
}
else
{
it ++ ;
}
}
6. vector数据的插入
vector<int> v1(10); //特别提示:提前把内存准备好
//给vector赋值
for ( int i = 0 ; i < 10 ; i++ )
{
v1[i] = i + 1;
}
v1.insert(v1.begin() , 100);
v1.insert(v1.end() , 200);