C++中根据传入的字符串顺序执行函数

2021-10-09 00:25:42 +08:00
 csfreshman

晚上有个沙雕需求,上游请求传过来一个字段,比如是"1;3;2;4;5;6;9;" 那么我按照顺序执行函数 f1(xx),f3(xx),f2(xx)……f9(xx)

伪代码:

exec_vec = phrase_exec_conf(xxxx);
for(int i = 0;i < exec_vec.size();i++)
    call_func(exec_vec[i]);

我晚上自己写了下,不优雅,很垃圾,请教下各位在 C/C++中有没有优雅点的实现?

2140 次点击
所在节点    C++
13 条回复
binux
2021-10-09 00:27:34 +08:00
怎么不优雅了?
csfreshman
2021-10-09 00:29:23 +08:00
@binux 自我感觉垃圾,一会贴上来你看下,C++写的少一些。
msg7086
2021-10-09 05:54:15 +08:00
写一堆 lambda 扔进数组里然后取下标执行?
ysc3839
2021-10-09 06:54:00 +08:00
请放完整代码,仅凭现在提供的代码没法确定最佳方案。
T0kvgh
2021-10-09 07:52:55 +08:00
std::map< int, std::function< void() > 之前这样稀奇古怪的用过
muzuiget
2021-10-09 08:32:21 +08:00
1. 粗暴,写很多 if 语句
2. 优雅,定义一套 DSL
3. Lua 帮到你
shawnsh
2021-10-09 09:00:29 +08:00
函数指针加队列
2i2Re2PLMaDnghL
2021-10-09 09:40:55 +08:00
格林斯潘第十定律
csfreshman
2021-10-09 11:42:19 +08:00
@T0kvgh 这不是稀奇古怪的用法,这很常见吧。
csfreshman
2021-10-09 11:43:08 +08:00
@ysc3839 昨天睡着忘了贴了,晚上回去贴下我写的 3 个方式。
LANB0
2021-10-09 19:57:14 +08:00
@msg7086 并不需要 lambda 呀,直接函数指针数组就好了。做协议解析时这不是常规操作吗
msg7086
2021-10-10 01:07:26 +08:00
@LANB0 确实不需要,不过 lambda 也可以做吧,道理应该是一样的。
(我不太懂 C++,请见谅。)
c0xt30a
2021-10-10 06:26:38 +08:00
感觉这已经是最干净利落的处理方式了,还是不要想着再加戏了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/806548

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX