1
4
你的功能更像
我不喜欢您的函数返回集合大小来模拟“一个超过结尾”。它要求调用者知道集合大小以检查函数是否成功。我更喜欢您的第二个函数,因为它返回一个常数值,这意味着“找不到”。
请远离第三个函数的异常方法,除非您有其他调用的函数提前告诉您该项 将 被发现。也就是说,为调用者提供一些避免异常的方法。
当返回的索引即使在项
不是
找到了。如果您正在进行二进制搜索,那么了解项目所在的索引可能会很有用。
将
如果它在集合中就可以找到。然后你可以提供一个
|
2
4
像STL一样。
在大多数情况下,这意味着返回一个超过结尾的迭代器。
您的情况更像是std::string,在这里您将与常量值进行比较。
|
3
2
使用Boost.Optional之类的工具。 阅读它背后的想法,以及如何自己实现它,这里: http://cplusplus.co.il/2009/12/04/boost-optional-and-its-internals/ 它还包含一个与您的确切问题相匹配的示例。 |
4
1
我认为这取决于你在寻找什么。这些信息重要吗?如果信息是关键的,那么您需要抛出一个异常,特别是如果不这样做会导致进一步的错误。 我喜欢返回-1,如果找不到匹配项,只是因为您总是知道如果找不到匹配项,函数将返回什么。如果你把它建立在集合的大小上,那么你就永远不会确切知道返回到那里的是什么。 我也不太喜欢在输出参数中返回它,只是因为它有点复杂,您必须问问自己,对于这样的函数,是否真的需要增加复杂性。 |
5
1
我采用的一个经验法则是:
决定是抛出异常还是返回某种类型的错误值可能很困难。只有较高级别的代码知道是否有异常情况,但必须由较低级别的代码做出决定。 |
6
1
迭代器,如果您使用这些作为访问器/变元器,则基于的算法会将迭代器返回到集合末尾(可以将其与
|
7
0
一般来说,我不会在任何情况下使用您的第一个和第四个示例。返回集合的大小通信不够清晰,以至于找不到任何项,IMO(请考虑一个错误)。我看不需要返回两个输出,当您可以通过只返回一个来完成相同的操作时(如
其余两种方法的使用取决于程序中的具体情况。如果项目 应该 在你的收藏中,这种情况是 X射线 . 在这种情况下,抛出异常是可以的。 另一方面,如果项目 能够 在你的收藏中,这是一个 有规律的 情况,所以例外是不够的。 如果编写的函数可能在两种情况下都使用,则不应引发异常。因为你永远不知道什么时候你可能需要一个函数,而不是你首先想到的,我的建议是返回-1 未找到项目 . 您还可以将这种方法用于其他函数,从而使您的代码基更加一致。 |
8
0
对我来说,在这个时代,使用魔法数字是可疑的 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |