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. 存储邻接表,避免使用指针

发布了16 篇原创文章 · 获赞 0 · 访问量 531

猜你喜欢

转载自blog.csdn.net/clfxyz/article/details/105680847
今日推荐