Я получаю сообщение об ошибке "нет совпадения для вызова" (std:: vector<int>) (int) "

Прежде чем читать эту проблему, обратите внимание, что это проблема ПРАКТИКИ для hp codewars (соревнование по программированию), я не спрашиваю форум о реальной проблеме. Моя программа должна принимать следующие данные:

  • Число, представляющее количество конфет в банке
  • Количество догадок, в которые будет входить пользователь
  • Имя человека, затем пробел и его предположение

пример:

  • 422: количество конфет в банке
  • 2: количество догадок
  • Джо 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 ответ

Решение

buff2(0) должно быть buff2[0] или же buff2.at(0)

Другие вопросы по тегам