Нет подходящей функции для вызова 'find_if'? - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь написать простую программу упражнений, которая позволяет пользователю вводить имена своих друзей и отслеживать, как долго они с ними не разговаривали. Я хочу проверить ввод имени друга, чтобы они могли выйти из ввода l oop, если вместо имени введут di git. Я предполагаю, что я делаю что-то не так с параметрами find_if, но, как новичок, я не совсем понимаю, что мне следует изменить.

Если кто-нибудь может объяснить, как использовать find_if в этом случае, я был бы очень признателен. Кроме того, если вы видите что-то явно неправильное или неэффективное в моем коде, пожалуйста, дайте мне знать.

Вот мой код:

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct Friend{
    string friendName=" ";
    int friendDays = 0;

        Friend(string& name, int& days){
            friendName=name;
            friendDays=days;
            printFriend();
    }
    void printFriend(){
        cout<<"You haven't seen ";
        cout<<friendName<<" in ";
        cout<<friendDays<<" days \n";
    }
};

int main(int argc, const char * argv[]) {
    int &&friendDays{};
    string &&friendName{};
    vector <Friend> friendArr;

    int i=0;
    while (cin){
        cout<<"Enter friends name: \n";
        cin>> friendName;
        if (find_if(friendName.begin(), friendName.end(), isdigit) != friendName.end())
        {
            break;
        }
        cout<<"How many days since you last spoke: \n";
        cin>>friendDays;
        friendArr.push_back(Friend(friendName,friendDays));
        i++;
    }
    cout<<"These are all your friends: \n";
    for (auto&x:friendArr){
        x.printFriend();
    }

}

...