deque与vector的区别

deque容器双端队列,可以对头端进行插入删除等操作;与vector的区别

  • vector对于头插\删效率低,deque更快
  • vector访问元素时的速度会比deque快。这是内部实现决定的。

deque的迭代器支持随机访问。deque内部工作原理

deque内部有个 中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据。中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间。

deque构造函数

  • deque<T>();                                 //默认构造形式
  • deque(beg,end);                         //构造函数将[beg,end)区间中的元素拷贝给本身
  • deque(n,elem);                           //构造函数将n个elem拷贝给本身
  • deque(const deque &deq);      //拷贝构造函数

deque赋值操作

  • deque& operator=(const deque &deq);
  • assign(beg,end);
  • assign(n,elem);

deque大小操作

  • bool empty();
  • size();
  • resize(int num);
  • resize(int num,elem);

deque插入和删除两端操作

  • push_back(elem);
  • push_front(elem);
  • pop_back();
  • pop_front()

指定位置操作

  • insert(int pos,elem);                           //在pos位置插入一个elem元素的拷贝,返回新数据的位置
  • insert(int pos,int count,elem);      //在pos位置插入n个elem数据,无返回值
  • insert(int pos,begin,end);                 //在pos位置插入[begin,end)区间的数据,无返回值
  • clear()
  • erase(beg,end);                                        //删除[beg,end)区间的数据,返回下一个数据的位置
  • erase(int pos);                                        //删除pos位置的数据,返回下一个数据的位置

deque数据存取

  • at(int idx);
  • operator[];
  • front();
  • back();

deque排序

  • sort(iterator begin,iterator end);      //对begin和end之间的元素进行排序,默认是升序
  • vector也可以使用这个算法排序

stack容器stack构造函数

  • stack<T> stk;
  • stack(const stack &stk)

stack赋值操作

  • operator=(const stack& stk);

stack大小操作

  • empty();
  • int size();

stack数据存取

  • push(elem);
  • pop();
  • Elem top();

queue容器queue构造函数

  • queue<T> que;
  • queue(const queue& que)

queue赋值操作

  • operator=(const queue& que);

queue大小操作

  • empty();
  • int size();

queue数据存取

  • push(elem);
  • pop();
  • back();             //返回队尾元素
  • font();             //返回队头元素

list容器链表,由一系列结点构成。结点:由存储数据元素的数据域和指向下一个结点地址的指针域构成。list是一个双向循环链表 List的插入和删除都不会造成原list迭代器的失效,这在vector中是不成立的。list构造函数

  • list<T>  lst;
  • list(beg,end);
  • list(n,elem);
  • list(const list& lst);

list赋值与交换

  • assign(beg,end);
  • assign(n,elem);
  • list& operator=(const list& lst);
  • swap(list& lst);

list大小操作

  • empty();
  • int size();

list数据插入和删除

  • push_back(elem);
  • pop_back();
  • push_front(elem);
  • pop_front();
  • insert(pos,elem);                         //返回新数据的位置
  • insert(pos,n,elem);
  • clear();
  • erase(beg,end);
  • erase(pos);                                    //返回下一个数据的位置
  • remove(elem);

list数据存取

  • font();
  • back();
不可以用at() 和[]访问;迭代器不支持随机访问;list<int>::iterator it = l1.begin();it++;it --; //都可以it =it +1; //不可以,不支持随机访问。

list反转和排序

  • reverse();     //反转链表
  • sort();            //排序链表
所有不支持随机访问迭代器的容器,不可以用排序算法。这里sort是成员函数

set/multiset容器set/multiset是关联式容器,底层结构是二叉树实现。所有元素都会在插入时自动被排序

  • set和multiset的区别
    • set不允许容器中有重复的元素
    • multiset允许容器中有重复元素

set构造和赋值

  • set<T> st;
  • set(const set& st);
  • set& operator=(const set& st);

set大小和交换

  • size();
  • empty();
  • swap(st);

set插入和删除

  • insert(elem);
  • clear();
  • erase(pos);
  • erase(beg,end);
  • erase(elem);

set查找和统计

  • find(key);        //查找key是否存在,如果存在,返回该键的元素的迭代器;若不存在,返回set.end();
  • count();

pair对组创建成对出现的数据,利用对组可以返回两个数据。

  • pair<type,type> p(value1,value2);
  • pair<type,type> p = make_pair(value1,value2);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七七八八九九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值