程序提示:control reaches end of non-void function [-Wreturn-type]

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

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

意思就是一些本应带有返回值的函数到达结尾后可能并没有返回任何值。 
警告出现的代码如下:

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;
    }
};

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值