当前位置:  开发笔记 > 编程语言 > 正文

在C++中使用模板时返回NULL

如何解决《在C++中使用模板时返回NULL》经验,为你挑选了1个好方法。

如果我有如下界面:

template 
V get(K key);  // Return the value of the key 

规范"在找不到密钥时返回NULL"是否有意义?除了抛出异常之外,还没有找到密钥时处理这种情况吗?

还有一个例外处理这里处理不存在的密钥的最佳方法吗?



1> 5gon12eder..:

你不能假设这V是一个指针.例如,如果Vint,则不能return,nullptr因为它不是有效值int.如果V是指针类型,请考虑它是否nullptr是一个有效的值,以便将其插入到地图中.如果是这样,怎么可能主叫区分nullptrreturn编表示"未发现",从"实际" nullptr

如果您可以return指向地图中的项目而不是副本,请考虑此签名.

template 
V * get(K key);

使用const V *,如果你宁愿没有来电修改对象在地图中.

或者,您可以使用optional.您可以在Boost中找到实现,也可以作为标准库的实验扩展.

当然,您也可以throw使用例外来指示您的地图中没有该密钥.但是,如果您的客户有合理的方式提前知道密钥是否存在,那么大多数编码标准只会被认为是好的风格.应使用例外来表示异常,错误的情况.地图中不存在密钥的事实不太可能符合这一要求,除非在您的情况下,可以假设密钥集是已知的.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有