【发布时间】:2015-06-02 21:58:14
【问题描述】:
** 请不要批评代码本身的目的。它来自 Pat Morin 的 Open Data Structures 书。不是我的第一选择,它指定的阅读/练习。我只是想知道是否有区分的方法,或者更好的方法来解决这个问题。教科书-->http://opendatastructures.org/ods-cpp/**
** 另一个注意事项:我来自 Java,这是允许的。我的代码仍然可以编译,它只是“修复”它**
我很惊讶以前没有出现过这样的问题,因为这似乎是一个如此简单的问题。也许它被埋没了,或者我没有使用正确的术语。
我有一个遍历向量中数据的 for 循环。如果找到,我需要返回正在搜索的值。如果找不到怎么办?这是我的代码。
int find(int x) {
for(int i=0;i<bag.size();i++){
// if x is equal to data, return data
if (bag[i]==x){
return bag[i]; // ends loop as soon as one instance is found
}
}
// if we made it this far, no match was found.
return NULL;
}
很简单。假设 0 是我可能需要记录和搜索的有效值之一。事实上,它实际上返回 0,而不是“NULL”。研究表明它是一回事。如何指定或区分?除了返回一个不会出现在程序中的晦涩数字之外,因为我们可能并不总是拥有那种奢侈(如 -1 或 -9999999)。例如,搜索您的帐户余额。没有数字是不可能的。
【问题讨论】:
-
如果找到 x(作为参数传递),返回作为参数传递的相同值有什么意义?为什么不使用
bool作为返回值呢? -
NULL并不意味着是int=> 代码无论如何都是错误的。作为搜索方法的错误值,-1是常用的。 -
我是否理解正确,如果找到该值,该函数将返回与输入相同的值?如果是,您只需返回任何其他号码,调用代码将能够知道是否找到它。或者更好的是,让它返回 true 或 false。
-
如果你阅读我的笔记 deviantfan,你会发现我已经解决了这个问题。您可以在其他一些语言中返回 null,因此为了清楚起见,我将其保留为原样。 @tobi303 - 它来自教科书中的一个练习题。不要让我从教科书开始。这就是为什么我在这里而不是在我的 uni 论坛上问的原因。
-
这是一个从其他语言迁移的人可能会提出的问题,合理地说,没有理由反对
标签: c++ vector null return-value function-definition