Функциональный объект, возвращающий n-й элемент кортежаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функциональный объект, возвращающий n-й элемент кортежа

Сообщение Anonymous »

С помощью std::ranges::max можно использовать проекцию следующим образом
std::vector v = {
{'a',2,1.0}, {'c',1,3.0}, {'b',4,2.0}, {'d',3,4.0}
};
auto m = std::ranges::max (v, {}, [](auto t) { return std::get(t); } );

Я посмотрел в std какой-нибудь объект функции getitem, который мог бы разрешить запись
auto m = std::ranges::max (v, {}, getitem{} );

но я ничего не нашел. Есть ли такая вещь в std? Я знаю, что есть std::views::elements, но ее нельзя использовать в этом контексте, поскольку для ее ввода требуется диапазон.
OTOH, я мог бы написать это сам с чем-то вроде этого (возможно, заново изобретя колесо)
template
struct getitem {
decltype(auto) operator() (auto&& x) {
return std::get(std::forward(x));
}
};


Подробнее здесь: https://stackoverflow.com/questions/798 ... of-a-tuple
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»