• C++顺序容器


    1.简介


    除了固定大小的array外,其他容器都提供高效、灵活的内存管理

    • string 和 vector是连续内存,由下标访问非常快速,但是在中间删除和添加元素非常耗时,在一次插入或删除后,需要移动所有元素来保持连续存储
    • list 和 forward_list是添加和删除非常快速,但是,不支持元素的随机访问,访问一个元素,只能遍历整个容器;相对额外内存开销也比较大
    • deque 支持快速随机访问,在中间删除或插入代价较大,但是在两端添加或删除很快。
    • 除非有更好的理由,否则使用vector更好
    • 如果有很多小元素,且对额外开销有要求,则不要使用list和forward_list

    1.头文件

    #include <vector>
    #include <list>
    #include <deque>
    #include <array>
    #include <string>
    #include <forward_list>
    

    2.定义和初始化

    3.赋值运算

    4.添加元素

    5.访问元素

    6.删除

    7.改变容器大小

    8.所有容器适配器都支持的操作和类型

    2.vector容器:

    vector<int> a1;
    vector<int> a2(3); //初始化3个元素,值为默认
    vector<int> a3(3,5);  //初始化3个元素,值都为5
    vector<int> a4{1,2,3,4};
    vector<int> a5 = {4,5,6};
    vector<int> b1(a4);
    vector<int> b2;
    
    b2.assign(a4.begin(), a4.begin() + 2); //将a4的前2个值赋给b2
    b2.swap(a5); //比直接拷贝快的多,b2为4,5,6
    swap(b2, a4); //b2和a4互换,类型需一致
    
    //返回a的最后一个元素
    a.back();
    
    //返回a的第一个元素
    a.front();
    
    //返回a的第i元素,当且仅当a存在
    a[i];
    
    //清空a中的元素
    a.clear();
    
    //判断a是否为空,空则返回true,非空则返回false
    a.empty();
    
    //删除a向量的最后一个元素
    a.pop_back();
    
    //删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
    a.erase(a.begin()+1,a.begin()+3);
    
    //在a的最后一个向量后插入一个元素,其值为5
    a.push_back(5);
    
    //在a的第一个元素(从第0个算起)位置插入数值5,
    a.insert(a.begin()+1,5);
    
    //在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
    a.insert(a.begin()+1,3,5);
    
    //b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
    a.insert(a.begin()+1,b+3,b+6);
    
    //返回a中元素的个数
    a.size();
    
    //返回a在内存中总共可以容纳的元素个数
    a.capacity();
    
    //将a的现有元素个数调整至10个,多则删,少则补,其值随机
    a.resize(10);
    
    //将a的现有元素个数调整至10个,多则删,少则补,其值为2
    a.resize(10,2);
    
    //将a的容量扩充至100,
    a.reserve(100);
    
  • 相关阅读:
    没有生产管理,只会生产的企业即将被淘汰
    实施一套MES系统需要多少钱?
    MES助力日立电梯提升精细化管理水平
    数据定义
    (CVE-2017-16995)Ubuntu内核提权
    (CVE-2017-7494)Linux Samba远程代码执行
    (CVE-2019-13272)Linux本地提权
    vulnhub 之 dc6
    vulnhub 之 dc 5
    vulnhub 之 dc4
  • 原文地址:https://www.cnblogs.com/penuel/p/11691030.html
Copyright © 2020-2023  润新知