我一直收到错误&#34;不匹配call&#39;(std :: vector <int>)(int)&#34; </int>

时间:2015-03-07 23:07:09

标签: c++ c++11 vector method-call no-match

在阅读此问题之前,请注意这是hp代码大战(编程竞赛)的 PRACTICE 问题,我不是在问论坛有关真正的问题。我的程序应该采取以下输入:

  • 一个代表罐子里糖果数量的数字
  • 用户将在
  • 中输入的猜测数量
  • 一个人的名字,后跟一个空格,然后是他们的猜测

示例:

  • 422:罐子里的糖果数量
  • 2:猜测次数
  • Joe 324:猜测者的名字以及他们对罐子里有多少糖果的猜测
  • 玛丽435:第二个猜测和猜测

输出应该是猜测最接近的人的姓名

示例:

  • 玛丽

我目前正在编写函数,该函数返回与猜测最接近的数字。但是,当我运行代码时,它在两行上给出了错误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;
}

请帮我解决这个问题!

1 个答案:

答案 0 :(得分:7)

buff2(0)应为buff2[0]buff2.at(0)