c\c++复习基础要点13---容器deque

容器deque和vector非常相似。它也采用动态数组来管理元素,提供随机存取,并有着和vector几乎一模一样的接口。不同的是deque的动态数组头尾都是开放,因此能再头尾两端进行快速安插和删除。

 

deque与vector不同的接口:

 c.push_front(elem);    在头部插入elem的一个副本

 c.pop_front();         移除头部元素

 

 

deque的各项操作只有一下几点和vector不同:

 

1.      deque不提供容操作(capacity()和reserve())

deque不支持对容器和内存重分配。特别注意的是,除了头尾两端,在任何地方安插或删除元素,都将导致指向deque元素的任何引用、指针、迭代器失效。

2.      deque直接提供函数,用以完成头部元素的安插和删除(push_front()和pop_front())

3.      除了at(),没有任何成员函数会检查索引或迭代器是否有效

4.      元素的插入或删除可能可能导致内存重新分配,所以任何安插或删除动作都会使所有指向deque元素的指针、引用、迭代器失效。唯一例外是在头部或尾部。动作之后,指针和引用仍然有效(但是迭代器就没那么幸运)。

 

总之,如果是以下情形,最好采用deque

1.      你需要在两端安插和删除元素

2.      无需引用容器内的元素

 

 

deque实例:

 

#include<iostream>

#include<deque>

#include<string>

#include<algorithm>

using namespace std;

 

void  main()

{

      deque<string>  coll;

      coll.assign(3,string(“string”));

      coll.push_back(“last string”);

      coll.push_front(“first string”);

      

      copy(coll.begin() , coll.end() ,

ostream_iterator<string>(cout , “\n”));

      cout<<endl;

     

    coll.pop_back();

    coll.pop_front();

    

    for(int  i=1; i<coll.size();++i)

    {

         coll[i]= “another” + coll[i];

    }

    

     coll.resize(4, “resized string”);

   

    copy(coll.begin() , coll.end() ,

ostream_iterator<string>(cout , “\n”));

     cout<<endl;

 

}

 

程序输出:

first string

string

string

string

last string

 

string

another string

another string

resized string

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值