当前位置:   article > 正文

c++容器适配器_c++ 容器适配器

c++ 容器适配器

一、容器适配器

除了顺序容器外,标准库还定义了三个顺序容器适配器:stack,queue,priority_queue

容器、迭代器和函数都有适配器。本质上,适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样,因此三个容器适配器都有自己的默认容器类型

stack和queue是基于deque实现的,priority_queue是基于vector实现的

二、定义适配器

种类默认顺序容器可用顺序容器说明
stackdequevector、list、deque只需back操作即可
queuedequelist、deque必须提供front()运算
priority_queuevectorvector、deque必须提供随机访问功能
  1. stack<int>stk1;
  2. stack<int, vector<int>>stk2; //在vector上实现的栈
  3. stack<int, vector<int>>stk3(vec); //用基础容器来初始化适配器

三、通用操作、类型

  1. //类型
  2. size_type 一种足以保存当前类型最大对象的大小的类型
  3. value_type 元素类型
  4. container_type 实现适配器的底层容器类型
  5. //操作
  6. A a 创建一个名为a的空适配器
  7. A a(c) 创建一个名为a的适配器,带有容器c的拷贝
  8. 关系运算符 每个适配器都支持所有关系运算符,这些运算符返回底层容器的比较结果
  9. a.empty() 如果a包含任何元素,返回false
  10. a.size() 返回a中的元素数目
  11. swap(a,b) a.swap(b) 交互a和b中的内容,a和b必须有相同类型,包括底层容器类型也必须相同

四、栈适配器

  1. stack<int>s;
  2. s.pop() //删除栈顶元素,但不返回该元素值
  3. s.push(item) //创建一个新元素压入栈顶
  4. s.emplace(args) //通过args创建一个新元素压入栈顶
  5. s.top() //返回栈顶元素

五、队列适配器

  1. queue<int>q;
  2. q.pop() //删除queue的首元素或priority_queue的最高优先级的元素
  3. q.front(),q.back() //返回首元素或尾元素,但不删除此元素,只适用于queue
  4. q.top() //返回最高优先级的元素,但不删除此元素,只适用于priority_queue
  5. q.push(item) //在queue末尾或priority_queue中恰当的位置创建一个元素
  6. q.emplace(args) //同上

优先队列是基于二叉堆实现的,我们可以自定义排序方式

priority_queue<int, vector<int>, greater<int>>q1;    //从小到大(小根堆)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/197981
推荐阅读
相关标签
  

闽ICP备14008679号