C++中vector容器用法

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

猜你喜欢

转载自blog.csdn.net/weixin_51964667/article/details/112982317