【发布时间】:2021-05-11 06:16:09
【问题描述】:
我正在使用一个函数来返回一个整数向量,但问题是,如果我在 if 语句中键入 return out,它会给我一个错误。如果我从 for 循环中输入它,代码就可以工作。在 if 语句生效后,我需要强制循环停止并返回输出向量。
vector<int> icecreamParlor(int m, vector<int> arr) {
vector<int> out;
for(int i = 0 ; i < arr.size(); i++){
int x = arr [i];
for(int z = 1 ; z < arr.size(); z++){
if(x + arr[z] == m){
out.push_back(i+1);
out.push_back(z+1);
return out;
}
}
}
}
这是错误消息
Solution.cpp: In function ‘std::vector<int> icecreamParlor(int, std::vector<int>)’:
Solution.cpp:10:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
for(int i = 0 ; i < arr.size(); i ++){
【问题讨论】:
-
如果条件
x + arr[z] == m永远不为真,那你会返回什么? -
并非所有代码路径都返回值。您可能想在第一个循环完成后而不是在循环内返回?
-
你实际上得到了什么错误?请edit 您的问题包括错误的full 和complete 复制粘贴。最好是 minimal reproducible example 来解决错误。
-
通常,错误本身会告诉您给出它的原因。它被称为“错误消息”。
-
快速修复您显示的 警告(不应该是唯一的):
for (size_t i = 0; ...与z的第二个循环相同。
标签: c++ if-statement vector return