Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

What is the fastest and shortest way to pass a function as parameter of another function without using other libraries other than the std one in just one line?

I mean let's say we have a function forloop(int x, *) {...} that run a for loop from 0 to x running the * function; the function call should be something like: forloop(3, **() { std::cout "Hi!"; });.

PS: * and ** are just placeholders for the function-by-argument type and the way to pass the function as argument.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
425 views
Welcome To Ask or Share your Answers For Others

1 Answer

C++11 provides anonymous functions:

forloop(3, []{ std::cout "Hi!"; });

Example:

#include <iostream>
#include <functional>

 void forloop(int times, std::function<void()> f) {
     for(int i = 0; i < times; i++) {
         f();
     }
 }

int main() {
    forloop(3, [] () { std::cout << "Hello world"; });
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...