• STL 中的vector 容器方法与API



    前言

    本章主要记录vector 类中的各种方法,函数,以及它们的用途
    本章内容仅为学习记录,如有纰漏,欢迎指正


    1.简介

    • vector容器与数组非常相似,也称为单端数组
      创建对象:
    • vector<数据类型> 容器名称;
    • 与普通数组区别:数组是静态空间,vector可以动态扩展
    • 注:在vs下扩容是1.5倍扩容,在gcc下扩容是2倍扩容

    vector 常用迭代器:

    • v.begin();

    • v.rbegin(); //指向右边开始第一个元素

    • v.end();

    • v.rend(); //指向左边第一个元素之前的位置,下标为[-1]

    • 注:vector的迭代器是支持随机访问的迭代器

    2.构造函数

    vector();						//默认构造函数
    vector(int n);					//开辟n个位置新空间
    vector(vec.begin(), vec.end());	//将vec[beg,end)区间中数据拷贝给自己
    vector(int n, elem);			//构造函数将n个elem元素拷贝给本身
    vector(const vector &vec);		//拷贝构造
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.容器赋值

    vector& operator= (const vector &vec);	//等号重载
    assign(beg, end);			//将[beg,end)区间中数据拷贝赋值给本身
    assign(n, elem);			//将n个elem数据拷贝赋值给本身
    
    • 1
    • 2
    • 3

    4.容量和大小

    empty();				//判空
    capacity();				//返回容器的容量
    size();					//返回当前元素个数
    
    resize(int num);		//重新指定长度为num,容器变长则以默认值填充新位置
    						//容器变短,则末尾超出范围元素被删除
    resize(int num, elem);	//重新指定容器长度为num,容器变长则以elem填充
    						//容器变短,同样末尾超出范围元素被删除
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.插入和删除

    注:插入是将插入位置后方的元素全部后移,而并非覆盖

    push_back(elem);							//尾部插入一个元素
    pop_back();									//删除尾部元素
    
    insert(const_iterator pos, ele);			//迭代器指向位置pos插入ele
    insert(const_iterator pos, int count, ele);	//迭代器指向位置pos插入count个ele
    
    erase(const_iterator pos);					//删除迭代器指向元素
    erase(const_iterator start, const_iterator end);	//删除[start, end)区间元素
    
    clear();									//删除容器中所有元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6.数据存取

    //以下方法返回值均为引用类型
    at(int index);		//返回index下标的数据
    operator[];			//返回index下标数据
    front();			//返回第一个数据
    back();				//返回最后一个数据
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7.互换容器

    swap(vec); 将vec与本身元素互换
    
    • 1
    • 利用swap函数收缩空间:
    vector<数据类型> (v).swap(v);
    
    • 1
    • vector<数据类型> (v):匿名对象,只取v中前size()个数据进行拷贝初始化
    • .swap(v): 将匿名对象与v自身进行交换操作
    • 注:匿名对象在当前行执行完成后立即回收,不会导致内存泄漏

    8.预留空间

    功能:减少vector在动态扩展容量时的扩展次数

    reserve(int len);	//容器预留len个元素长度,预留位置不初始化,元素不可访问
    
    • 1

  • 相关阅读:
    Python爬虫网易云音乐,Tkinter制作音乐播放器
    k8s k3s节点加入控制平面没效果
    智能小车开发
    【供应链】供应链的含义及特征
    MyBatis 分页插件 PageHelper 6.0.0 发布
    std::format格式化自定义类型
    春秋云境靶场CVE-2022-28512漏洞复现(sql手工注入)
    代码随想录算法训练营第二十四天| 77 组合
    力扣记录:Hot100(7)——207-240
    HMS Core安全检测服务如何帮助大学新生防范电信诈骗?
  • 原文地址:https://blog.csdn.net/KamikazePilot/article/details/126823081