关于STL中的pop操作为什么没有返回值
来源:互联网 发布:软件企业认定 招标 编辑:程序博客网 时间:2024/04/30 04:15
今天写代码的时候遇到了个错误。背景是实现一个具有min()操作的栈结构。实现的方案就是在每个栈元素中除了包含入栈的数据之外,同时还保留一个栈的min元素的值。
因为偷懒,所以就只实现了push(), pop()和min()三个操作。min是返回栈顶的元素的min部分,pop返回栈顶元素的数据部分,并将栈顶元素弹出。
因为要验证,最后就写了如下的代码:
while (!s.empty()) { cout << s.min() << ',' << s.pop() << endl;}
想到这里,就觉得写出无漏洞的代码真的好难。这种潜在的可能会有副作用的操作真心会容易出错的。进而考虑到关于栈操作,STL中的操作也是,提供top()类似的操作。
在pop()之前要先用top()访问,pop()本身是不返回元素的。这个想法看来还真是有意义的,防止在访问元素时候潜在的副作用。
进一步想起来,在实现各种操作的时候,函数的实现也是不要验证empty()的,用户需要自己验证empty()和full(),否则会出现未定义的行为。
- 关于STL中的pop操作为什么没有返回值
- STL中的stack的pop函数为什么不返回值?
- 1.1.40.stl中的pop_back和 pop函数为什么不带返回值?--为了不减弱 异常安全性-
- C++中的构造函数为什么没有返回值
- C++中的构造函数为什么没有返回值
- 关于STL中的erase操作
- 为什么构造函数没有返回值?
- 为什么构造函数没有返回值?
- 构造函数为什么没有返回值
- 为什么C++中stack的pop()函数不返回值而返回void
- 为什么C++中stack/queue的pop()函数不返回值而返回void
- 构造函数析构函数为什么没有返回值?
- java的main函数为什么没有返回值
- C++ 构造函数中为什么没有返回值?
- 构造函数析构函数为什么没有返回值?
- 构造函数析构函数为什么没有返回值?
- java的main函数为什么没有返回值
- 构造函数析构函数为什么没有返回值?
- 10大Android手机杀毒软件
- JNDI 源码解析
- google地图画线
- HDOJ3887-DFS人工栈,树状数组
- 代码规范的那些事儿
- 关于STL中的pop操作为什么没有返回值
- 去掉UCenter验证码的修改方法
- jQuery插件 -- 动态事件绑定插件jquery.livequery.js
- 使用Axis开发Web Service程序整合 spring
- SYN洪水攻击
- HDOJ1853-费用流(圈,拆点)
- 深入了解php底层机制
- 下载图片(文件)到SD文件
- Quartz 配置实例