平时练习代码时候发现如下提问:

意思就是一些本应带有返回值的函数到达结尾后可能并没有返回任何值。
警告出现的代码如下:
class Gift {
public:
int getValue(vector<int> gifts, int n)
{
map<int, int> value;
int i=0 ;
int t=0;
for (auto a : gifts)
{
value[a]++;
if (value[a] > n / 2)
{
return a;
}
else
{
i++;
}
if (i == n)
{
return t;
}
}
//return 0;
}
};
经查阅相关资料发现是在某种特殊情况下没有返回值,比如传递的vector为空的时候,就不存在返回值,而函数要求返回值为int,因此产生错误,因此最简单的办法就是添加一个返回值语句:
如上图中注释的return 0; 代码进一步写为精简为下面:
class Gift {
public:
int getValue(vector<int> gifts, int n)
{
map<int, int> value;
int i=0 ;
for (auto &a : gifts)
{
value[a]++;
if (value[a] > n / 2)
return a;
}
return 0;
}
};

在平时练习代码时,遇到一些本应带返回值的函数到达结尾可能无返回值的情况。经查阅资料,发现是特殊情况(如传递的vector为空)导致无返回值,与函数要求的返回值类型冲突。解决办法是添加返回值语句。
2639

被折叠的 条评论
为什么被折叠?



