微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据命令行输入返回函子

如何解决根据命令行输入返回函子

从命令行输入中,我收到的是'=',''的单个字符,后跟一个值,我的目标是使用自定义函子迭代并修改我的基础数据容器(例如使用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 举报,一经查实,本站将立刻删除。