STL容器适配器接口小结
来源:互联网 发布:淘宝助理导入宝贝详情 编辑:程序博客网 时间:2024/05/18 01:21
首先,stack是个顺序(不是关联)容器适配器,不简单的是个容器,是建立在容器基础上的,虽然其接口简单...
叫这个名字意思是使容器的操作限制在栈的接口上...
下面先简要介绍stack的接口
stack的特有操作
I.构造函数
1.stack<int> si;这样值类型是int,使用默认底层实现容器deque.等价于stack<int,deque<int>> si;
也可以这样
deque<int> di;
stack<int> si<di>;使用已有基础容器初始化栈
2.改变默认实现容器,栈的操作只需要出栈顶(表尾)元素等(具体见后面),决定了其底层可以使用任意容器,如stack<string,vector<string>> ss;
这样栈实现的操作如push就是由vector的push_back实现的,但是你不能越过去调用push_back,限定只能使用stack的push...
II.
si.push(item)栈顶压入元素
si.pop()弹出栈顶元素
si.top()返回栈顶元素
III.
si.empty()返回bool值
si.size()返回其中元素个数
stack作为容器适配器而必须具备的操作和其内部定义的类型
I.通用构造函数
A a;空适配器
A a(c);适配器内容初始化为容器c的副本
II.重载的比较操作符
==,!=,<,<=,>,>=
所有适配器必须支持这些操作符
至于使用其实是这样判定的
从头开始比较元素,
以第一个不同元素的比较结果作为适配器比较结果,有点类型字符串比较的方法
但是必须其中的值类型,比如stack<int>的int必须支持这些比较操作符...
III.自定义类型
size_type 一种类型,足以表示最大元素的个数(即表示其中元素个数的类型)
value_type 值(元素)类型
container_type 基础容器类型,如stack默认的是deque(双端队列)
使用stack必须包含#include <stack>
如果不行得在写上#include <deque>
如果是其他容器当然的包含其它顺序容器的头文件...
关于底层实现容器的要求:
The underlying container may be any of the standard container class templates or some other specifically designed container class. The only requirement is that it supports the following operations:
- front()
- back()
- push_back()
- pop_back()
Therefore, the standard container class templates vector, deque and list can be used. By default, if no container class is specified for a particular queue class, the standard container class template deque is used.
由于stack接口简单,可以很容易的代替自己写的栈(虽然顺序栈很简单),还是可以省下不少时间,至于STL的高效性,不容置疑...
- STL容器适配器接口小结
- STL容器适配器
- STL容器适配器:stack
- STL容器适配器:queue
- STL容器适配器:priority_queue
- C++ STL 容器适配器
- STL 容器适配器
- C++ STL 容器适配器
- C++ STL 容器适配器
- STL容器适配器
- STL 之容器适配器
- STL容器适配器
- STL容器适配器
- STL之容器适配器
- 【STL容器学习】-容器适配器
- STL容器删除小结
- STL 容器小结
- STL 容器小结
- UML类图
- c++ const
- 使用itemEditor改进数据向导生成的Flex应用
- 数据挖掘概述
- 使用Validator改进数据向导生成的Flex应用
- STL容器适配器接口小结
- 计算机经典著作
- 数据挖掘建模之评估数据
- 自定义Flex Validator
- 设计模式读书笔记之状态模式(State Pattern)
- tonight
- AIR中的延迟呈现
- Delphi中创建类的实例与定义一个变量引出的问题
- 功能点(FP)估算法(一) 识别项目范围和数据复杂度