[英]Running below c++ program
我最近开始在 c++ 中编码,当我在下面运行代码时它运行良好
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target){
vector<int> result;
for (int i = 0; i < numbers.size(); i++) {
for (int j =i+1 ; j<numbers.size(); j++){
if (numbers[j] == target - numbers[i]){
result.push_back (i);
result.push_back (j);
}
}
}
return result;
}
};
而对于这个它给出
Line 15: Char 5: error: non-void function does not return a value in all control paths [-Werror,-Wreturn-type]
}
^
1 error generated.
我不知道为什么,因为两者都是一样的
class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target){
vector<int> result;
for (int i = 0; i < numbers.size(); i++) {
for (int j =i+1 ; j<numbers.size(); j++){
if (numbers[j] == target - numbers[i]){
result.push_back (i);
result.push_back (j);
return result;
}
}
}
}
};
您的两个代码都不相同。
在您的第一个代码中, return
语句放置在嵌套的 for 循环之后,以便在调用 function twoSum()
时始终执行它。
但是,在您的第二个代码示例中, return
语句包含在if
语句中,因此只有在if语句中的条件得到if
时才会执行。
因此,从编译器的角度来看,有可能(在您的第二个代码中) if
语句中的表达式永远不会计算为true
,因此return
语句可能永远不会被执行。
您可以通过在 function 的末尾添加一个return
语句来更正您的第二个代码,就像在您的第一段代码中一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.