我有一个函数可以检查正则表达式并std::vector<int>
根据正则表达式结果返回。我需要检查功能是否失败/成功。成功返回向量对象,失败nullptr
后检查if (somefunc() == nullptr) // do smth
返回类型的std::vector<int>
值不能是nullptr
。
在这种情况下,最直接的方法是 return std::unique_ptr<std::vector<int>>
- 在这种情况下,可以 return nullptr
。
其他选项:
optional<std::vector<int>>
作为返回类型(boost::optional
或者std::optional
,如果你的编译器有这个C ++ 17功能)bool
参数并std::vector<int>&
作为函数的输出参数最好的方法实际上取决于用例。例如,如果大小为 0 的结果向量等价于“失败” - 随意在代码中使用这种知识,只需检查返回向量是否为空即可知道函数是失败还是成功。
在我的实践中,我几乎总是坚持返回optional
(boost 或 std,取决于环境限制)。这种界面是陈述“结果可以存在或不存在”这一事实的最清晰方式。
总而言之 - 这不是唯一一个正确解决方案的问题。上面列出了可能的选项 - 这只是您的个人经验和环境限制/对流的问题 - 选择哪个选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句