vector容器说明:
vector是一种向量类型,在C++STL算法中是一个重要的成员,在使用vector时需要包含头文件:#include<vector>
1、vector容器的初始化:vector<T>a;//T是容器内元素的变量类型,可以是任何合法数据类型,a是变量名称
(1)vector<int>a;//定义一个空的vector容器,其内部数据元素的类型为整型
(2)vector<int>a(10);//定义一个大小为10的vector容器,其内部数据元素的类型为整型,但10个整型元素的值未知
(3)vector<int>a(10,1);//定义一个大小为10的vector容器,其内部数据元素的类型为整型,但10个整型元素的值为1
(4)vector<int>a(b);//用b向量来创建a向量,把b向量的值整体复制个a向量
(5)vector<int>a(b.begin(),b.begin()+n);//把b向量的值从第0个元素至第n-1个元素(共n个元素)复制给a向量
(6)int b[10]={1,3,5,7,9,6,10,15,12,33};
vector<int>a(b,b+7);//从数组中获得元素,把数组b中的第0个至第6个元素(共7个元素)复制给a向量
2、vector向量容器常用方法
(1)a.push_back(n);//在a向量的最后一个元素后插入一个元素,其值为n
(2)a.pop_back();//在a向量的最后一个元素后删除一个元素
(3)a.clear();//清空a向量中的所有元素
(4)a.size();//返回a向量中元素个数
(5)a.back();//返回a向量中的最后一个元素
(6)a.front();//返回a向量中的第一个元素
(7)a.erase(a.begin()+5);//删除a向量中下标为5的元素
(8)a.erase(a.begin()+2,a.begin()+4);//删除a向量中下标为2的到下标为3的2个元素
(9)a.empty();//判断a向量是否为空,为空则返回ture ,不为空则返回false
(10)a.assign(b. begin(), b.begin()+3); //b为向量,将b的下标为0到下标为2的元素赋给a向量
(11)a.assign(4,2); //a向量中只含4个元素,且每个元素值为2
(12)a. insert(a. begin()+1,5); //在a向量的下标为1的位置插入数值5,如a为1,2,3,4,插入元素后为1, 5,2,3,4
(13)a.insert(a.begin()+1,3,5); //在a向量的下标为1的位置起插入3个数,其值都为5,如a为1,2,3,4,插入元素后为1,5,5,5,2,3,4
(14)a. swap(b); //b为向量,将a向量中的元素和b向量中的元素进行整体性交换
3、迭代器遍历:容器类型<变量类型>::iterator 迭代器名;
例:vector<int>::iterator it;
for (it = a.begin(); it != a.end(); it++)
cout << *it << ' ';
4、vector常用方法的操作示例
#include<iostream>
#include<vector>
using namespace std;
int main()
{
//定义一个空的int型向量容器
vector<int> a;
//从向量容器尾部插入三个值
a.push_back(5);
a.push_back(8);
a.push_back(10);
//定义一个int类型迭代器
vector<int>::iterator it;
//通过迭代器遍历输出向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//删除尾部最后一个元素
a.pop_back();
//通过迭代器遍历输出删除尾部元素后的向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//输出向量a的元素个数
cout<<"a.size()="<<a.size()<<endl;
//清空向量a
a.clear();
//再次输出向量a的元素个数
cout<<"a.size()="<<a.size()<<endl;
//循环添加元素
for (int i = 0; i <= 5; i++)
a.push_back(i);
//通过迭代器遍历输出向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//删除a向量中下标为2的到下标为3的2个元素
a.erase(a.begin()+2,a.begin()+4);
//通过迭代器遍历输出向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//在a向量的下标为1的位置插入数值9
a.insert(a.begin()+1,9);
//通过迭代器遍历输出向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//在a向量的下标为3的位置起插入3个数,其值都为2
a.insert(a.begin()+3,3,2);
//通过迭代器遍历输出向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//删除向量a中下标为5的元素
a.erase(a.begin()+5);
//通过迭代器遍历输出向量a
cout<<"a:";
for(it=a.begin();it!=a.end();it++)
cout<<*it<<" ";
cout<<endl;
//判断向量a是否为空
if(a.empty())
cout << "Is empty" << endl;
else
cout << "Not empty" << endl;
return 0;
}
结果:
a:5 8 10
a:5 8
a.size()=2
a.size()=0
a:0 1 2 3 4 5
a:0 1 4 5
a:0 9 1 4 5
a:0 9 1 2 2 2 4 5
a:0 9 1 2 2 4 5
Not empty