如何解决根据命令行输入返回函子
从命令行输入中,我收到的是'=',''的单个字符,后跟一个值,我的目标是使用自定义函子迭代并修改我的基础数据容器(例如使用remove_if)。简单但缓慢的解决方案是使用输入char并在其中的运算符之间切换来构造单个函子。但是,这需要在每次调用仿函数的运算符时检查运算符的类型。我的第一个解决方案是在char上使用switch语句,并创建具有3个派生类的基本函子类。但是,我意识到虽然这是一个完全可行且快速的解决方案,但最终我还是对switch语句进行了大量的代码重复。我尝试解决此问题的方法是使用多态性,并使用一个接受输入char并返回具有virtual()运算符的基类的指针的函数。但是,当我传递取消引用的基类指针时,它将不接受纯virtual()运算符,并且派生类的运算符不会覆盖它。从某种意义上说,我想要一个函数,该函数返回与输入char的值相关联的特定lambda或比较器。什么是解决这个问题的好方法?
解决方法
由于lambda具有自己的类型,因此我不知道一种构造函数来返回不同lambda的方法。您可以将它们存储在std ::函数中并支付开销。
我认为将功能ptr和map结合使用可能是一个很好的解决方案。考虑使用constexpr映射(例如在https://youtu.be/INn3xa4pMfg中),创建函数并将映射存储在该映射中。
请注意,您还可以使用 Time Value Observation Result
0 1 13 NaN None
1 2 54 Start df0
2 3 68 NaN df0
3 4 94 NaN df0
4 5 31 End df0
5 6 68 NaN None
6 7 46 NaN None
7 8 46 NaN None
8 9 31 Start df1
9 10 53 NaN df1
10 11 54 NaN df1
11 12 85 End df1
12 13 75 NaN None
13 14 42 Start df2
14 15 69 End df2
(请参见https://en.cppreference.com/w/cpp/language/lambda)将未捕获的lambda转换为功能ptr。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。