在运行时指定多个谓词

2024-03-16

STL中有一些运算符类,如less、equal_to、greater_equal等。如何轻松地将它们组合起来与remove_if函数一起使用?

例如我想删除向量中大于 0 且小于 3 且不等于 2 的元素,那么它会是这样的:

remove_if (v.begin(), v.end(), bind2nd(greater<int>(),0) + bind2nd(less<int>(),3) + not1(bind2nd(equal_to<int>(), 2)));

用户在程序运行期间可以指定过滤选项,例如他可以写:remove if x > 0 && x 5 || x == 3。然后解析命令,并将适当的运算符及其参数组合在一起形成一个谓词。


实际上,对于您的情况来说,这相当简单。

首先需要解析用户给出的语句,并将其转化为AST(抽象语法树)。事实证明,这个 AST 几乎已经合适了。

x > 0 && x < 3 && x != 2

可以表示为一棵树:

      AND
     /   \
    >     AND
   / \   /    \
  x  0   <    !=
        / \   / \
       x   3 x   2

所有节点都应该继承自一个公共基类,并且您应该实现一个Visitor来评估x给定值的参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在运行时指定多个谓词 的相关文章

  • 电话号码的正则表达式,不允许全零

    需要您的正则表达式帮助 我当前的正则表达式是 d 8 最小长度为 8 不允许包含字母 特殊字符和空格 我还想禁止全零 如 00000000 Thanks 该模式应该可以满足您的需求 0 d 8 The 0 部分是负前瞻 将阻止仅输入零 Ex
  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • 静态类变量与外部变量相同,只是具有类作用域吗?

    在我看来 静态类变量与外部变量相同 因为你只需要declare它在static int x extern int x语句 并在其他地方实际定义它 通常在 cpp 文件中 静态类变量 h file class Foo static int x
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • Paradox 表 - Oledb 异常:外部表不是预期的格式

    我正在使用 Oledb 从 Paradox 表中读取一些数据 我遇到的问题是 当我将代码复制到控制台应用程序时 代码可以工作 但在 WinForms 中却不行 两者都以 x86 进行调试 我实际上只是复制代码 在 WinForms 应用程序
  • 如何使用 wpf webbrowser 将数据发布到 Web 服务器

    我想从数据库获取数据并使用它来让用户登录到网站 我有一个包含 Web 浏览器控件的 wpf 页面 我有这样的代码 用于将用户登录到用 php 编写的网站
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 默认值 C# 类 [重复]

    这个问题在这里已经有答案了 我在控制器中有一个函数 并且我收到表单的信息 我有这个代码 public Actionresult functionOne string a string b string c foo 我尝试将其转换为类似的类
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 您可以在一个 Windows Azure 实例上部署多个 Web 应用程序吗?

    是否可以在一个 windows azure 小型计算实例中运行一堆 Web 应用程序 我正在考虑使用 Azure 作为放置一堆处于开发和非生产状态的项目 Web 应用程序 的地方 有些实际上已经被封存了 但我想在某个地方有一个活跃的实例 我
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • #pragma pack(16) 和 #pragma pack(8) 的效果总是相同吗?

    我正在尝试使用来对齐数据成员 pragma pack n http msdn microsoft com en us library 2e70t5y1 28v vs 100 29 aspx 以下面为例 include
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • C++ [Windows] 可执行文件所在文件夹的路径[重复]

    这个问题在这里已经有答案了 我需要访问一些文件fstream在我的 Windows 上的 C 应用程序中 这些文件都位于我的exe文件所在文件夹的子文件夹中 获取当前可执行文件的文件夹路径的最简单且更重要的 最安全的方法是什么 Use 获取
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul

随机推荐

  • 使用箭头键滚动 div

    这类似于SO 如何用箭头键移动div https stackoverflow com questions 4950575 how to move a div with arrow keys 所以也许一个明确且知情的 不 就足以作为答案 我可
  • Passport js通过url验证

    我在我的应用程序中使用 Express JS 和 Passport JS 我想为新用户提供通过特定 URL 自动登录一次的机会 我可以使用 URL 中的信息从数据库中获取用户 因此我有一个 User 对象 带有 id 电子邮件 散列密码等
  • 在 HttpWebRequest 中添加自定义标头

    我需要添加一些自定义标头HttpWebRequest目的 如何添加自定义标头HttpWebRequestWindows Phone 7 中的对象 您使用Headers具有字符串索引的属性 request Headers X My Custo
  • 如何使用 Backbone 处理单页应用程序的 UI 状态

    请耐心等待 因为我来自传统的 Web 开发背景 使用 ASP Net 甚至服务器端 MVC 我正在尝试使用 Backbone js 构建一个高度交互的单页应用程序 以帮助组织我的 javascript 代码并构建 UI 我在构建 UI 组件
  • JAVA_HOME 未正确定义 编译时出错

    我正在 cocoa 中开发一个使用一些 java 类的应用程序 我收到错误 JAVA HOME 未正确定义我们无法执行 System Library Frameworks JavaVM framework Home bin java 我不知
  • Java,默认编码[重复]

    这个问题在这里已经有答案了 可能的重复 jvm默认编码是什么 https stackoverflow com questions 1006276 what is the default encoding of jvm Hello 当用于处理
  • 函数式反应式编程的“信号”表示是否正确?

    我一直在研究 FRP 并发现了许多不同的实现 我见过的一种模型我将其称为 信号 表示 这一本质将事件和行为结合成一个实体 首先 信号是一个对象 其值是一种行为 其次 信号具有一个事件 流 可以将其视为标准数据结构并对其进行操作 您可以在信号
  • 为什么控制器对路线更新没有响应?

    我想保留控制器的实例而不重新加载 我设置reloadOnSearch为 false 我在控制器中管理路由更改 这是代码 这是我的链接的示例 a href products page 2 next a 我定义了以下模块 angular mod
  • jquery mobile 一页具有不同的元视口设置

    我尝试过调整我的元数据viewportjQM 上的标签beforepageshow等等它根本不起作用 我想这是很明显的原因 我有一个页面上有一个 highcharts 图表 我的视口标签内没有任何内容 通常有width device wid
  • Python 中的元组声明

    在 python 中 可以用括号显式声明一个元组 如下所示 gt gt gt x 0 25 0 25 0 25 0 25 gt gt gt x 0 25 0 25 0 25 0 25 gt gt gt type x
  • 有没有办法对 Neo4j 数据进行分片和复制?

    我正在考虑为我正在从事的一些新项目选择 Neo4j 对于给定的数据需求 本质上基于图形 neo4j 非常适合 并且快速原型为我提供了良好的响应时间 我想了解的是如何扩展 neo4j 部署 具体来说 如何跨 neo4j 部署对数据进行分片 由
  • 我可以从 BitBucket 克隆 git 存储库吗?

    我正在尝试使用 BitBucket git 存储库 但我个人更喜欢使用 hg 这有效 git clone https email protected cdn cgi l email protection projectuser projec
  • Flask-SQLAlchemy – 您可以在模型中进行查询吗?

    我正在构建一个使用 Flask SQLAlchemy 的 Flask Web 应用程序 并且我还在考虑使用 Flask Login 来处理会话并保护某些视图 Flask Login 需要某些方法 我认为这些方法对应用程序的各个部分都很有用
  • MySQL标记问题:如何选择已标记为X、Y和Z的项目?

    我正在处理一个数据库 其中的项目被 标记 一定次数 item 100k 行 id name 其他的东西 tag 10k 行 id name item2tag 1 000 000 行 item id tag id count 我正在寻找最快的
  • C# 中集合的 XML 序列化

    我有两个课程如下 public class Info XmlAttribute public string language public int version public Book book public Info public In
  • Swagger-Web Api 文档(Swashbuckle 中缺少 Bootstrapper)

    我正在尝试使用 swagger 作为我的 Web api 文档 为此我已经从 nuget 包安装了 Swashbuckle 但我无法在 swaggerconfig cs 类中获取 Bootstrapper 包 那么是否有其他替代方法可以在
  • 如何在 Windows 7 的 git bash 终端中不使用鼠标选择文本?

    我使用的是 Windows 7 安装 Windows 版 Git 后可以使用 Git Bash I found mouse inconvenient to select copy paste in terminal window What
  • C++CLI。本机部分是用纯 C++ 编写的,但在 CLI 中编译的速度与纯本机 C++ 一样快吗?

    我想将音频计算委托给 C 层 但通过 WPF GUI 处理和编辑音频内容 我简要了解了 C CLI 我想知道 我应该使用 C CLI 作为 C GUI 和 C 音频管理之间的中间层吗 或者我应该简单地将代码放入 C CLI 中并期望它以相同
  • 如何在 if 语句中使用 UIActionSheet? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我有一个if声明工作正常 但我需要添加第二个if其中的声明 我似乎不知道如何正确执行 这是我的代码 IBAction xButto
  • 在运行时指定多个谓词

    STL中有一些运算符类 如less equal to greater equal等 如何轻松地将它们组合起来与remove if函数一起使用 例如我想删除向量中大于 0 且小于 3 且不等于 2 的元素 那么它会是这样的 remove if