我一直收到错误 "no match for call '(std::vector<int>) (int)"
I keep getting the error "no match for call '(std::vector<int>) (int)"
阅读此问题之前请注意,这是一个针对 hp codewars(编程竞赛)的 PRACTICE 问题,我不是在论坛上询问真正的问题。我的程序应该接受以下输入:
- 代表一个罐子里糖果数量的数字
- 用户将输入的猜测次数
- 一个人的名字,后面是 space 然后是他们的猜测
示例:
- 422:罐子里的糖果数量
- 2: 猜数
- 乔 324:猜测者的名字和他们对罐子里有多少糖果的猜测
- Mary 435:二选一猜测
输出应该是猜得最接近的人的名字
示例:
- 玛丽
我目前正在编写 returns 最接近猜测的数字的函数。但是,当我 运行 代码时,它在两行中给我错误 no match for call '(std::vector<int>) (int)
。在我的代码的注释中指出了发回错误的行。
这是我的代码:
vector<int> compare(vector<int> nums, int loopnum, int ans){
vector<int> buff2;
for (int i = 0; i<loopnum;i++){
vector<int>diff;
int buff = ans - nums.at(i);
for (int j = 0; j<loopnum; j++){
diff.push_back(buff);
for (int k = 0; k<diff.size(); k++){
if (k == 0){
buff2.push_back(diff.at(k));
}
else{
// this line is sending back an error
if ((abs(buff2(0))) > abs(diff.at(k))) {
buff2.clear();
buff2.push_back(diff.at(k));
}
// this line is also sending back an error
else if ((abs(buff2(0))) == abs(diff.at(k))){
buff2.push_back(diff.at(k));
}
}
}
}
}
return buff2;
}
请帮我解决这个问题!
buff2(0)
应该是 buff2[0]
或 buff2.at(0)
阅读此问题之前请注意,这是一个针对 hp codewars(编程竞赛)的 PRACTICE 问题,我不是在论坛上询问真正的问题。我的程序应该接受以下输入:
- 代表一个罐子里糖果数量的数字
- 用户将输入的猜测次数
- 一个人的名字,后面是 space 然后是他们的猜测
示例:
- 422:罐子里的糖果数量
- 2: 猜数
- 乔 324:猜测者的名字和他们对罐子里有多少糖果的猜测
- Mary 435:二选一猜测
输出应该是猜得最接近的人的名字
示例:
- 玛丽
我目前正在编写 returns 最接近猜测的数字的函数。但是,当我 运行 代码时,它在两行中给我错误 no match for call '(std::vector<int>) (int)
。在我的代码的注释中指出了发回错误的行。
这是我的代码:
vector<int> compare(vector<int> nums, int loopnum, int ans){
vector<int> buff2;
for (int i = 0; i<loopnum;i++){
vector<int>diff;
int buff = ans - nums.at(i);
for (int j = 0; j<loopnum; j++){
diff.push_back(buff);
for (int k = 0; k<diff.size(); k++){
if (k == 0){
buff2.push_back(diff.at(k));
}
else{
// this line is sending back an error
if ((abs(buff2(0))) > abs(diff.at(k))) {
buff2.clear();
buff2.push_back(diff.at(k));
}
// this line is also sending back an error
else if ((abs(buff2(0))) == abs(diff.at(k))){
buff2.push_back(diff.at(k));
}
}
}
}
}
return buff2;
}
请帮我解决这个问题!
buff2(0)
应该是 buff2[0]
或 buff2.at(0)