C++标准模板库(STL)——vector变长数组

STL——vector数组
  • 概念:“向量”
    理解为变长数组,可根据实际需要自动改变长度的数组

  • 定义:vector<typename> name;
    vector<int> a; 定义一个数组int a[size],长度可变,其中,typename可以是任何基本类型,也可以是STL标准容器,如vector、set、queue等。
    当typename为STL容器时,>>之间要加空格 vector<vector<int> > name;

  • 头文件:

#include<vector>
using namespace std;  //都必须有
  • vector数组定义:
    vector<int> vi[10] ,定义一个从vi[0]—vi[9],每一维都可变长度的二维数组

  • 元素访问:下标访问;迭代器访问

  • vector常用函数:
    push_back(元素值): vector后面添加一个元素,复杂度O(1)
    pop_back( ): vector后面删除一个元素,复杂度O(1)
    size(): vector容器元素个数,复杂度O(1)
    clear():  清空所有元素

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int num;
    vector<int> a;        //定义vector变长数组

    for(int i=1;i<=3;i++){
        cin>>num;
        a.push_back(num);   //依次录入三个数并放入vector中
    }

    a.pop_back();          //将最后一个元素删去

    int length=a.size();   //求现在数组长度

    for(int i=0;i<length;i++){
        cout<<a[i]<<" ";        //输出剩余元素
    }

    return 0;
}
输入:
4 5 6
输出:
4 5

insert(位置it,元素x): 在迭代器it处插入元素x,复杂度O(N)
erase(位置it):  迭代器it处删除一个元素,复杂度O(N)
erase(起始,结束): 删除 [起始,结束) 间所有元素
所有的位置都可简单理解为下标

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int num;
    vector<int> a;        //定义vector变长数组

    for(int i=1;i<=5;i++){
        cin>>num;
        a.push_back(num);   //依次录入1 2 3 4 5三数入vector
    }

    a.insert(a.begin()+2, 0);    //1 2 0 3 4 5

    a.erase(a.begin()+1);        //1 0 3 4 5

    a.erase(a.begin()+3, a.begin()+5);  //1 0 3,若3——5,则为1 0 3 5

    for(int i=0;i<a.size();i++){
        cout<<a[i]<<" ";        //输出剩余元素
    }

    return 0;
}
  • 常见用途:
  1. 在数组元素个数不确定时当做数组使用,节省空间
  2. 当输出元素个数未知时,为方便最后一个元素输出后没有空格,可以将元素先放入vector中,再输出
  3. 存储邻接表,避免使用指针

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值