functor- все статьи тега


указатель функции против функторов в C++

В чем разница между использованием функторов и указателей функций? Например //Functor struct add_x { int x; add_x(int y):x(y){} int operator()(int y) { return x+y; } }; //Function int (func)(int x) { return ++x; } std::vector<int> vec(); //fill vec with 1 2 3 4 5 int (*f)(int) = func;//Function pointer std::transform(vec.begin(),vec.end(),f); //approach 1 std::transform(vec.begin(),vec.end(),add_x(1)); //approach 2 Оба подхода ра ...

Функция передается в качестве аргумента шаблона

Я ищу правила, связанные с передачей функций шаблонов C++ в качестве аргументов. Это поддерживается C++ , как показано на примере здесь: #include <iostream> void add1(int &v) { v+=1; } void add2(int &v) { v+=2; } template <void (*T)(int &)> void doOperation() { int temp=0; T(temp); std::cout << "Result is " << temp << std::endl; } int main() { doOperation<add1>(); doOperation<add2>(); } Однако изучить эту технику доволь ...

Что такое функторы C++ и их использование?

Я постоянно слышу много о функторах в C++. Может ли кто-нибудь дать мне обзор того, что они есть и в каких случаях они были бы полезны? ...

Что такое функтор в функциональном программировании?

Я сталкивался с термином "функтор" несколько раз, читая различные статьи по функциональному программированию, но авторы обычно предполагают, что читатель уже понимает этот термин. Оглядываясь вокруг в интернете предоставил либо чрезмерно технические описания (см. статья в Википедии) или невероятно расплывчатые описания (см. раздел о Функторах на этом ocaml-учебник веб-сайт). может кто-то любезно определить термин, объяснить его использование, и, возможно, приведите пример того, как создаются и ...

Почему я не могу определить функцию внутри другой функции?

это не вопрос лямбда-функции, я знаю, что я могу назначить лямбда переменной. какой смысл позволять нам объявлять, но не определять функцию внутри кода? например: #include <iostream> int main() { // This is illegal // int one(int bar) { return 13 + bar; } // This is legal, but why would I want this? int two(int bar); // This gets the job done but man it's complicated class three{ int m_iBar; public: three(int bar):m_iBar(13 + bar){} ...

Монады как дополнения

Я читал о монадах в теории категорий. Одно определение монад использует пару сопряженных функторов. Монада определяется круговым движением с использованием этих функторов. По-видимому, дополнения очень важны в теории категорий, но я не видел никакого объяснения монад Хаскелла в терминах сопряженных функторов. Кто-нибудь задумывался об этом? ...

Множества, функторы и путаница эквалайзера

недавно на работе возникла дискуссия о наборах, которые в Scala поддерживают zip метод и как это может привести к ошибкам, например, scala> val words = Set("one", "two", "three") scala> words zip (words map (_.length)) res1: Set[(java.lang.String, Int)] = Set((one,3), (two,5)) я думаю, что это довольно ясно, что Sets не должен поддерживать a zip операция, так как элементы не упорядочены. Однако было высказано предположение, что проблема заключается в том, что Set на самом деле не функто ...