История изменений
Исправление hateyoufeel, (текущая версия) :
#include <iostream>
#include <algorithm>
#include <vector>
struct Datum {
int n;
char c;
};
template <class F, class G> F max_field(F first, F last, G getter)
{
return std::max_element(first, last, [&getter](auto &a, auto &b) { return getter(a) < getter(b); });
}
int main(void)
{
std::vector <Datum> data = { Datum{1, 'a'}
, Datum{2, 'b'}
, Datum{3, 'c'}
};
char letter = max_field(std::begin(data), std::end(data), [](Datum &d) { return d.n; })->c;
std::cout << letter << std::endl;
}
Держи мой костыльный вариант. Нашкрябал щаз за 5 минут после пробежки, но вроде работает. На C++ тыщу лет не писал. Вместо нетипизированного G лучше бы обернуть это в std::function, но с этим ты сам справишься.
Исправление hateyoufeel, :
#include <iostream>
#include <algorithm>
#include <vector>
struct Datum {
int n;
char c;
};
template <class F, class G> F max_field(F first, F last, G getter)
{
return std::max_element(first, last, [&getter](auto &a, auto &b) { return getter(a) < getter(b); });
}
int main(void)
{
std::vector <Datum> data = { Datum{1, 'a'}
, Datum{2, 'b'}
, Datum{3, 'c'}
};
char letter = max_field(std::begin(data), std::end(data), [](Datum &d) { return d.n; })->c;
std::cout << letter << std::endl;
}
Держи мой костыльный вариант. Нашкрябал щаз за 5 минут после пробежки, но вроде работает. На C++ тыщу лет не писал.
Исправление hateyoufeel, :
#include <iostream>
#include <algorithm>
#include <vector>
struct Datum {
int n;
char c;
};
template <class F, class G> F max_field(F first, F last, G getter)
{
return std::max_element(first, last, [&getter](auto &a, auto &b) { return getter(a) < getter(b); });
}
int main(void)
{
std::vector <Datum> data = { Datum{1, 'a'}
, Datum{2, 'b'}
, Datum{3, 'c'}
};
char letter = max_field(std::begin(data), std::end(data), [](Datum &d) { return d.n; })->c;
std::cout << letter << std::endl;
}
Держи мой костыльный вариант.
Исходная версия hateyoufeel, :
#include <iostream>
#include <algorithm>
#include <vector>
struct Datum {
int n;
char c;
};
template <class F, class G> F max_field(F first, F last, G getter)
{
return std::max_element(first, last, [&getter](auto &a, auto &b) { return getter(a) < getter(b); });
}
int main(void)
{
std::vector <Datum> data = { Datum{1, 'a'}
, Datum{2, 'b'}
, Datum{3, 'c'}
};
char letter = max_field(std::begin(data), std::end(data), [](Datum &d) { return d.n; })->c;
std::cout << letter << std::endl;
}
Держи мой костыльный вариант.