C++ 函数中的向量返回意外结果,循环
下面将返回两个整数的匹配结果。我不明白为什么它会打印一些垃圾编号,而且它仍然处于循环中C++ 函数中的向量返回意外结果,循环,c++,vector,C++,Vector,下面将返回两个整数的匹配结果。我不明白为什么它会打印一些垃圾编号,而且它仍然处于循环中 #include <vector> #include <unordered_set> #include <iostream> //given array with integers {1,3,5,5,3,3} find a pair of numbers that will equal to targetSum //target Sum=10 for example u
#include <vector>
#include <unordered_set>
#include <iostream>
//given array with integers {1,3,5,5,3,3} find a pair of numbers that will equal to targetSum
//target Sum=10 for example
using namespace std;
vector<int> twoNumberSum(vector<int> array, int targetSum)
{
unordered_set<int> nums;
for (int num: array) {
int potentialMatch = targetSum - num;
if (nums.find(potentialMatch) != nums.end()) {
vector<int> a = vector<int> {num,potentialMatch};
vector<int> b = vector<int> {potentialMatch, num};
return potentialMatch > num ? a : b;
} else {
nums.insert(num);
}
}
}
int main() {
vector<int> array;
array.push_back(1);
array.push_back(3);
array.push_back(5);
array.push_back(7);
int i;
i = 10;
auto res = twoNumberSum(array, i);
for (auto item : res)
cout << item << endl;
}
#包括
#包括
#包括
//给定整数为{1,3,5,5,3,3}的数组,找到一对等于targetSum的数
//例如,目标总和=10
使用名称空间std;
向量twoNumberSum(向量数组,int targetSum)
{
无序的集合nums;
for(int num:array){
int-potentialMatch=targetSum-num;
if(nums.find(potentialMatch)!=nums.end(){
向量a=向量{num,potentialMatch};
向量b=向量{potentialMatch,num};
返回potentialMatch>num?a:b;
}否则{
nums.插入(num);
}
}
}
int main(){
矢量阵列;
数组。推回(1);
阵列。推回(3);
阵列。推回(5);
阵列。推回(7);
int i;
i=10;
auto res=两个numbersum(数组,i);
用于(自动项目:res)
cout函数结束前缺少return
语句。如果不匹配,则需要返回空向量
vector<int> twoNumberSum(vector<int> array, int targetSum)
{
unordered_set<int> nums;
for (int num: array) {
int potentialMatch = targetSum - num;
if (nums.find(potentialMatch) != nums.end()) {
vector<int> a = vector<int> {num,potentialMatch};
vector<int> b = vector<int> {potentialMatch, num};
return potentialMatch > num ? a : b;
} else {
nums.insert(num);
}
}
// Missing from your code.
return {};
}
向量twoNumberSum(向量数组,int targetSum)
{
无序的集合nums;
for(int num:array){
int-potentialMatch=targetSum-num;
if(nums.find(potentialMatch)!=nums.end(){
向量a=向量{num,potentialMatch};
向量b=向量{potentialMatch,num};
返回potentialMatch>num?a:b;
}否则{
nums.插入(num);
}
}
//代码中缺少。
返回{};
}
如果没有最后的
return
语句,您的代码将具有未定义的行为。不确定是否发生了这种情况,在您的情况下(使用调试器逐步检查代码,应该会发现这一点),但是:如果nums.find(potentialMatch)!=nums.end()
从来都不是真的吗?这是一个教训。我试图分配一个“return;”,但由于它在return语句中需要一个值,所以不被接受。谢谢!