zoukankan      html  css  js  c++  java
  • C++中的顺序容器

    容器定义和初始化

        

    与顺序容器大小相关的构造函数

        

      注意:只有顺序容器的构造函数才接受大小参数,关联容器并不支持。

    标准库array具有固定大小

      

      因为大小是array类型的一部分,array不支持普通的容器构造函数。

    六种初始化vector对象的方法

       vector<int> ilist1;

       vector<int> ilist2(ilist);  //     vector<int> ilist2_1 = ilist;

      vector<int> ilist = {1,2,3.0,4,5,6,7}; // 包含3.0的类型转换

      vector<int> ilist3(ilist.begin()+2,ilist.end()-1);

      vector<int> ilist4(7);

      vector<int> ilist5(7,3);  //7个值为3的int

    赋值和swap

      

    使用assign(仅顺序容器)

      顺序容器定义了一个名为assign的成员,允许我们从一个不同但相容的类型赋值,或者从容易的一个子序列赋值,assign操作用参数所指定的元素(的拷贝)替换左边容器的所有元素。

    使用array

     除array之外,swap不对任何元素进行考诶、删除或者插入操作,因此可以保证在常数时间内完成。交换来听歌容器内容的操作保证会很快,

      元素本身并没有交换,swap只是交换了两个容器内部数据结构。而交换两个array所需时间与array中元素的数目成正比。

      另:统一使用非成员版本的swap是一个好习惯,因为其在泛型编程中时很重要的。

    容器大小操作

      

    顺序容器操作

      

      使用push_back

        除array和forward_list之外,顺序容器支持push_back将元素压入容器尾部。

      关键概念:容器元素是拷贝。

      使用push_front

        list、forward_list和deque容器还支持名为push_front的操作,将元素插入到容器的头部。

      在容器特定位置添加元素

        slist.insert(iter,"hello!"); //hello插入到了iter指向的元素之前。

      插入范围内元素

        

      使用isert的返回值

        

      使用emplace操作

        

      注意:

          

       访问元素

         

        

      删除元素

        

      特殊的forward_list操作

        

      改变容器大小

        

        

      容器操作可能使迭代器失效

        

      防止迭代器失效的操作:

          为了防止添加和删除vector、string、或deque元素循环程序必须考虑迭代器、引用和指针可能失效的问题。程序必须保证每个循环步骤中都更新迭代器、引用或指针。

           不要保存end返回的迭代器。 因为end返回的迭代器总是会失效。

    vector对象是如何增长的

          【采用多分配一点空间作为备用】

          管理容量的成员函数

            

      capcity和size  

        容器的size是指它已经保存的元素的数目,而capacity则是在不分配新的内存空间的前提下它最多可以保存多少元素。

        也就是说,capacity是包含备用空间的大小,size只是当前保存的元素的数量。

          

         为什么list或array没有capacity成员函数

          因为list新节点是从空间中分配新的内存,而删除节点是直接将节点占用的内存释放,所以不存在保留空间这个说法,至于array,数组内存是一次性分配,大小不变,不会变化。

      额外的string操作

        

        substr操作

             

        改变string的其它方法

                

        

        

       改变string的多种重载函数

        

      string搜索操作

         

        

      指定在哪里开始搜索

        

       逆向搜索

         

      compare函数

        

    数值转换

        

    容器适配器

        

    栈适配器

        

    队列适配器

          

          

  • 相关阅读:
    php pdf添加水印(中文水印,图片水印)
    论文阅读---Reducing the Dimensionality of Data with Neural Networks
    Deep Learning综述[下]
    Install-Package:QRCoder已拥有为System.Drawing.Common定义的依赖项
    linux和windows之间传递文件
    IPV6修复工具
    Deep Learning综述[上]
    novaclient开发中遇到的问题小结
    easybcd删除win10启动项如何恢复?
    uefi+gpt安装双系统
  • 原文地址:https://www.cnblogs.com/xingzhuan/p/10672290.html
Copyright © 2011-2022 走看看