Функции высшего порядка в C ++

Опубликовано: 16 Декабря, 2021

Функции высшего порядка - это функции, которые принимают функции в качестве аргумента. Он используется в функциональных языках, которые не используются в C ++, хотя это медленно меняется, поскольку C ++ 11 дал нам лямбда-выражения и 'std :: function' ... и часто люди не понимают, что 'std :: function' - это не инструмент, который подходит для всех вариантов использования. В этой статье мы объясним, как передать функцию в качестве аргумента другой вызывающей функции.

Синтаксис:

return_type function_name(function<return_type fun_name(argument_list), other function arguments)

Параметры: В приведенной выше ИМЯ_ФУНКЦИИ принимает функцию с именем , как fun_name в качестве аргумента. И function_name, и fun_name могут иметь дополнительные аргументы.

Ниже приведена иллюстрация того же:

Преимущества функций высшего порядка :

Используя функцию высшего порядка, можно решить многие проблемы. Например, чтобы создать функцию, которая принимает список и другую функцию в качестве входных данных, применяет эту функцию к каждому элементу этого списка и возвращает новый список. В Haskell это можно сделать очень легко, используя встроенную функцию более высокого порядка, называемую map. Определение карты:

 map :: (a -> b) -> [a] -> [b]  
карта _ [] = []  
map f (x: xs) = fx: map f xs

Здесь,

  • Первая строка - инициализация функции.
  • Символ элементов означает «относится к типу».
  • [a] представляет собой список похожих элементов, сущность, записанная после последней -> всегда является типом возвращаемого значения функции. Функция в Haskell всегда возвращает только одну сущность.
  • (a-> b) определяет функцию от «a» до «b». Мы использовали повторение для определения карты,
    [] обозначает пустой список, а _ обозначает «что угодно».
  • Вторая строка показывает, что если вводится пустой список и какая-либо функция, то выводом будет пустой список.
  • x: xs используется для извлечения элементов по одному из списка, x - это первый элемент (голова), а xs - оставшийся список (хвост). : знак означает конкатенацию. Итак, вкратце, третья строка берет каждый элемент из списка, применяет к ним функцию 'f' и объединяет его с оставшимся списком.
Хотите узнать больше о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровней C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .