为什么在 boost python 向量索引套件中需要比较运算符?

2023-12-29

我想公开 C++ 代码

std::vector<A>

到蟒蛇。我的

class A{};

没有实现比较运算符。当我尝试时

BOOST_PYTHON_MODULE(libmyvec)
{
  using namespace boost::python;
  class_<A>("A");
  class_<std::vector<A> >("Avec")
    .def(boost::python::vector_indexing_suite<std::vector<A> >());
}

我收到有关比较运算符的错误。如果我将 A 的定义更改为

class A {
public:
  bool operator==(const A& other) {return false;}
  bool operator!=(const A& other) {return true;}
};

它就像一个魅力。

为什么我需要实现这些比较运算符?有什么办法可以使用vector_indexing_suite没有他们?


vector_indexing_suite实现了一个__contains__成员函数,需要存在相等运算符。因此,您的类型必须提供这样的运算符。

Boost.Python 的沙盒版本通过使用特征来确定容器上可用的操作类型来解决此问题。例如,find仅当值具有相等可比性时才会提供。

默认情况下,Boost.Python 认为所有值都是相等可比较和小于可比较的。由于您的类型不满足这些要求,因此您需要专门化特征来指定它支持哪些操作:

namespace indexing {
  template<>
  struct value_traits<A> : public value_traits<int>
  {
    static bool const equality_comparable = false;
    static bool const lessthan_comparable = false;
  };
}

这是有记录的here http://boost-sandbox.sourceforge.net/python/indexing/containers.html#ValueTraits.

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

为什么在 boost python 向量索引套件中需要比较运算符? 的相关文章

  • C++ 中的软(不是:弱)引用 - 这可能吗?有实施吗?

    在 C 中我正在使用boost shared ptr and boost weak ptr自动删除不再需要的对象 我知道这些与引用计数一起工作 在 Java 中 内存由垃圾收集器管理 它将内置对象引用视为strong WeakReferen
  • 赋值运算符和复制构造函数有什么区别?

    我不明白C 中赋值构造函数和复制构造函数之间的区别 是这样的 class A public A cout lt lt A A lt lt endl The copy constructor A a b The assignment cons
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • Java 8 流 for 循环

    我是 Java 8 Streams 的新手 希望将以下代码块转换为 Java 8 的 Stream 方式来做同样的事情 Edit 更新类名以减少混乱 删除了 Foo Bar Baz ArrayList
  • 当表单操作到同一页面时,保留页面位置吗?

    在我当前的项目中 用户单击他们正在编辑的内容的 保存更改 然后在页面下方弹出编辑框 保存的文本等 有没有办法让网站保留其页面位置 以便自动滚动回他们单击编辑的位置 理想情况下 我有某种类型的解决方案 页面不必重新加载 但我不知道该怎么做 哈
  • Interactjs 如何更改拖动项目的开始位置

    我的拖动项目最初出现在左上角 我想在开口处从顶部到左侧留出 100 像素的空间 但我必须用interactjs自己的代码而不是css来做到这一点 因为如果我用 css 来做 滚动设置就会被破坏 interact dragitem dragg
  • 如何在Javascript中调用vue实例之外的实例

    如何在 javascript 中调用测试 vue 这是我的代码 当我在 javascript 函数中执行某些操作时 我想调用测试 function clickit this test fetchTestData var test new V
  • Android SecretKeyFactory 问题。未找到实施?

    我正在尝试创建一个使用加密来保存用户信息的 Android 应用程序 但我不知道我做错了什么 我正在尝试使用 PBKDF2WithHmacSHA1 算法创建 SecretKeyFactory 的实例 但应用程序在程序中的该点上不断抛出异常
  • python程序中的.pyw文件

    我是 Python 编程新手 任何人都可以解释一下 pyw 文件是什么以及它是如何工作的 Python 脚本 扩展名为 py 的文件 将由以下命令执行执行程序默认情况下 该可执行文件打开一个终端 该终端停留在 即使程序使用 GUI 也可以打
  • Angular 2+:组件样式不断影响其他组件

    得到了家庭组件background color red写入其 scss 然后获取用户组件background color green写入其 scss 中 我启动我的应用程序 我在家 有红色背景 转到用户页面 有绿色背景 工作正常 但现在当我
  • Spring boot YAML 配置:参数化键

    Spring Boot 是否允许使用 YAML 使用参数键 参数键示例 myapp configured key This is your email gt 0 And this is your name gt 1 在我的 Java 类中
  • AttributeError:无法设置工作簿的属性

    所以我有以下代码正在写入已经存在的 Excel 文件 book load workbook file path writer pd ExcelWriter file path engine openpyxl writer book book
  • 如何在 Windows 上编译共享库,以便可以与 raku 中的 NativeCall 一起使用?

    我正在尝试在 Windows 上编译一个 DLL 库 可以与本地调用 https docs raku org language nativecall在乐 这是一个最小的 C 代码 my c dll c include
  • 使用 robocopy 将源和目标作为变量

    对脚本编写完全陌生 试图通过搜索网络找到解决方案 但我很困惑 所以请寻求帮助 我正在尝试将 robocopy 与变量一起用作源和目标 每个变量都不同 但我无法获得正确的语法 我可以正常工作的硬代码是 robocopy C Users me
  • 在 iOS 上使用单独的线程进行网络连接

    我开发的应用程序是一个与 OS X 服务器通信的 iOS 客户端 该应用程序的当前版本在主线程上执行所有网络逻辑 这对于我想做的事情来说效果很好 然而 在下一个版本中 我希望网络逻辑更加灵活 为了使其工作 我想专门为其提供一个单独的线程 但
  • 如何删除 SwiftyJSON 元素?

    我有一个 JSON 数组 比如说 dataObj 由生成SwiftyJSON https github com SwiftyJSON SwiftyJSON我尝试像这样删除它的元素 let count dataObj count for va
  • FailedScheduling:0/3 个节点可用:3 个 Pod 不足

    我正在尝试将 NodeJS 应用程序部署到 EKS 并使用完全相同的容器运行 3 个 Pod 这是错误消息 kubectl get pods NAME READY STATUS RESTARTS AGE cm deployment 7c86
  • WPF 应用程序中的任务栏丑陋图标

    在我的 WPF 应用程序中 任务栏中的图标看起来非常难看 设计师给我发了一些 PNG 例如 32x32 64x64 96x96 128x128 192x192 256x256 512x512 我需要做什么才能获得良好的任务栏图标 谢谢你 制
  • 如何让 ClickOnce 在安装新版本期间卸载旧版本?

    我已经能够成功地将我的 ClickOnce 设置打包到创新设置 http en wikipedia org wiki Inno Setup安装脚本 以便我可以将其作为单个 EXE 文件部署给我的客户 这个过程效果很好并且相对无痛 现在我有一
  • (DataGridView + Binding)如何根据绑定的对象对线条进行着色?

    我想根据绑定对象的属性为特定行添加背景色 我的解决方案 并且有效 是使用 EventDataBindingComplete但我认为这不是最好的解决方案 这是事件 private void myGrid DataBindingComplete
  • 使用 Web 服务时出错:现有连接被强制关闭

    我有一个用 C 编写的 Winforms 应用程序 它使用来自 Windows 2008 IIS Coldfusion 服务器的 Web 服务 所有 Web 服务调用都会成功 只有一个调用失败 大约 50 的情况下会失败 并出现以下错误 用
  • HttpServletRequest getRemoteAddr() 没有按照我的预期工作

    根据我的理解 以下代码返回不正确 HttpServletRequest httpRequest HttpServletRequest request String userIPAddress httpRequest getRemoteAdd
  • 为什么在 boost python 向量索引套件中需要比较运算符?

    我想公开 C 代码 std vector a 到蟒蛇 我的 class A 没有实现比较运算符 当我尝试时 BOOST PYTHON MODULE libmyvec using namespace boost python class a