vector,list,deque,map,capacity和size的区别等容器总结




 

1、我们不能对内置数组进行拷贝,但是可以对array进行拷贝:

  eginta[10]={1,2,3,4,,5,6};

      int copy[10]=a     //wrong

       

      array<int ,10> arr={1,2,3,4,5,6};

      array<int ,10> arr1=arr //right

2,顺序容器操作:

  1除了arrayforward_list外,每个容器都支持push_back将一个元素追加到数组的尾部。

  2除了push_back listforward_listdeque容器还支持push_front操作,将元素插入到容器的头部。

  3支持insert操作的容器有,vectordequelist、和string

      egvector<int> sevcsevc.insert(sevc.begin(),1);警告:插入到vector末尾之外的任何位置都可能很慢

  4)访问元素有c.back();c.front();c[n],c.at(n)其中支持at操作的有stringvectordequearray

   5)删除元素pop_front()pop_back()用法和push_frontpush_front相同;c.erase(p)删除迭代器p所指向的元素

     eg,list<int> lst={12,3,4,5,6,5,7,8,9,};

        auto it=lst.begin();

        while(it!=lst.end())

         {

            if*it%2

            {

               itlstErase(it)

             }

            elseit++;}

          }

  5)改变容器的大小,我们可以用resize来增大或缩小容器。array不支持resize

    eg,list<int> llst(10,32)

      llstResize(15)

  6)vector对象是如何增长的

    为了支持快速访问,vector将元素连续存储--每个元素紧挨着前一个元素存储,考虑向vectorstring中插入新元素时,如果没有足够的空间容纳新元素,容器不能简单的将它添加到内存中,因为元素必须是连续的,容器必须分配新的空间来保存已有元素和新元素,将已有的元素从旧位置移动到新空间,然后添加新元素,释放旧的空间。为了避免多次分配新空间,标准库实现者采用可以减少容器分配次数的策略,当不得不分配新空间时,vectorstring通常会分配比新空间需求更大的内存空间以作备用。

  7)容器中capacitysize的区别:

    容器的size是指它保存的元素的数目;而capacity则是指不分配新内存空间的前提下它最多可以保存多少个元素,具体的值依赖于标准库的实现

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值