设为首页 加入收藏

TOP

4.3.1 "无意义"的值
2013-10-07 15:09:31 来源: 作者: 【 】 浏览:77
Tags:4.3.1 " 意义 的值

4.3  optional

optional库使用"容器"语义,包装了"可能产生无效值"的对象,实现了"未初始化"的概念。

optional位于名字空间boost,为了使用optional,需要包含头文件<boost/optional. hpp>,即:

  1. #include <boost/optional.hpp> 
  2. using namespace boost; 

4.3.1 "无意义"的值

函数并不是总能返回有效的返回值,很多时候函数可能返回"无意义"的值,这不意味着函数执行失败,而是表明函数正确执行了,但结果却不是有用的值。如果用数学语言来解释,就是返回值位于函数解空间之外。

例如,求一个数的倒数,在实数域内开平方,在字符串中查找子串,它们都可能返回无效的值。有些无效返回的情况可以用抛出异常的方式来通知用户,但有的情况下这样代价很高,或者不允许异常,这时必须要以某种合理的高效的方式通知用户。

表示返回值无意义最常用的做法是增加一个"哨兵"的角色,它位于解空间之外,如NULL、-1、EOF、string::npos、vector::end()等。但这些做法不够通用,而且很多时候不存在解空间之外的"哨兵"。

optional使用"容器"语义,为这种"无效值"的情形提供了一个较好的解决方案。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.6 singleton 下一篇3.3 scoped_array

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: