函数的调用顺序
void A(){}void B(){}
void C(){}
for(int i=0;i<10;i++)
{
A();
B();
C();
}
如上面的代码,我需用这三个函数10次,每次调用的顺序都会变,可以是ABC,也可能是CBA;如何才能控制循环里函数的先后执行顺序?
#include <string> #include <sstream> #include <iostream> #include <map> using namespace std; void A() { cout << "In A" << endl; } void B() { cout << "In B" << endl; } void C() { cout << "In C" << endl; } void invoke(string order) { static map<string const, void(*)()> functions; functions["A"] = A; functions["B"] = B; functions["C"] = C; istringstream iss(order); string functionName; while (iss >> functionName) { functions[functionName](); } } int main() { invoke("A B C"); cout << "---" << endl; invoke("C B A"); }