Задать вопрос
@Tolstohabr

Как правильно написать функтор?

#include <iostream>
#include <windows.h>
#include <list>
#include <string>
#include <algorithm>
using namespace std;

struct man {
    string name;
    int a;
    int b;
    int c;
    int d;
    int e;
    void operator()() {
        if (a == 1) {
            cout << "победитель в первой дисциплине " << name << endl;
        }
        if (b == 1) {
            cout << "победитель во второй дисциплине " << name << endl;
        }
        if (c == 1) {
            cout << "победитель в третьей дисциплине " << name << endl;
        }
        if (d == 1) {
            cout << "победитель в четвертой дисциплине " << name << endl;
        }
        if (e == 1) {
            cout << "победитель в пятой дисциплине " << name << endl;
        }
    } 
     

};
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    man a;
    list <man> L;
    list <man>::iterator it;
    cout << "-----введи количество спортсменов" << endl;
    int n;
    cin >> n;
    cout << "-----введи фамилию и результаты каждого спортсмена" << endl;
    for (int i = 0; i < n; i++) {
        cin >> a.name;
        cin >> a.a;
        cin >> a.b;
        cin >> a.c;
        cin >> a.d;
        cin >> a.e;
        L.push_back(a);
    }

    for_each(L.begin(), L.end(),  <<КАК ЗДЕСЬ БЫТЬ?>>);
}


В самом конце есть цикл for_each. Как правильно надо написать там функтор?
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Передайте лямбду, которая вызывает перегруженный оператор вызова у вашей структуры:
[](const man& item) { item(); }

Правда, тут не нужно перегружать () для вашего типа, ведь в лямбде вы можете вызвать любой метод или прямо вашу логику реализовать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы