将 C++11 数组与 Cython 连接

2024-01-01

我习惯于构建 C++ 程序并在 Cython 中获取它,但在这里我试图获取 C++ 11array这绝对行不通。

这是我的 .pxd :

cdef extern from "<array>" namespace "std" nogil :
    cdef cppclass array[T, size_t]:
        ctypedef T value_type
        cppclass iterator:
            T& operator*()
            iterator operator++()
            iterator operator--()
            iterator operator+(size_t)
            iterator operator-(size_t)
        bint operator==(iterator)
        bint operator!=(iterator)
        bint operator<(iterator)
        bint operator>(iterator)
        bint operator<=(iterator)
        bint operator>=(iterator)
        T& operator[](size_t)
        array() except +
        array(array&) except +

该文件的大部分内容是对“vector.pxd”的改编,但我删除了分配器,因为 c++11array不需要它。我用了size_t作为第二个模板参数,但我不确定。

问题是,当我这样做时:

    from array11 cimport array
    cdef array[int, 5] test   

编译时我得到:

模板参数中的未知类型

如果我做 :

    from array11 cimport array
    cdef array[int, 5] * test = new array[int, 5]()

I get :

new 运算符只能应用于 C++ 类

知道我做错了什么吗?

Thanks!


正如评论中所讨论的,您遇到的问题是因为 Cython 并不真正支持非类型模板参数。一种解决方法(hacky 并且可能很脆弱)是欺骗 Cython 认为它提供了类型模板参数:

cdef extern from "<array>" namespace "std" nogil :
    cdef cppclass two "2":
        pass

    cdef cppclass array[T, U]:
        T& operator[](size_t)
        # this is obviously very very cut down

def f():
    cdef array[int,two] x
    return x[0]+x[1]

诀窍是如果你这样做cdef cppclass name "somestring"Cython 只会盲目替代somestring名称,它生成正确的 C++ 代码。这种方法显然有一些限制,但对于简单的使用来说应该没问题。

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

将 C++11 数组与 Cython 连接 的相关文章

  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 验证生成的 JAXB 类(JSR 303 / Spring)

    我使用 JAXB maven jaxb2 plugin 从架构 请求和响应 生成域对象我想为几个属性添加验证 notnull empty 我想要自定义 Bean 验证 该应用程序是一个 REST 服务 我正在使用 Spring 3 和 JS
  • VBA Excel 形状

    我使用了一个小子程序将图片插入到我的工作表中 ActiveSheet Pictures Insert URL Select 这适用于 Excel 2003 Windows 但不再适用于 Excel 2011 Mac 因此我修改了我的子程序
  • 为每一行创建的 Pandas DataFrame

    我正在尝试将 JSON 数据从 API 传递到 Pandas DataFrame 我无法得到pandas read json处理 API 数据 所以我确信这不是最好的解决方案 但我目前有for loop运行 JSON 来提取我想要的值 这是
  • 在 AWS 上使用 Apache-Spark 加载数据

    我正在 Amazon Web Service AWS EC2 上使用 Apache Spark 来加载和处理数据 我创建了一个主节点和两个从节点 在主节点上 我有一个目录data包含所有要处理的csv格式的数据文件 现在 在我们提交驱动程序
  • Android Eclipse 问题无法创建 BuildConfig 类

    我在 Eclipse 中清理 Android 项目时收到 无法创建 BuildConfig 类 错误 我最近为移动开发人员安装了 Eclipse Juno 当我尝试导入现有的 Android 应用程序时 Eclipse 开始出现这种错误 如
  • 使用 consteval 代替 constexpr 函数有哪些优点?

    我知道需求的差异 我最感兴趣的是它带来的代码质量带来的好处 我能想到的几件事 读者只需阅读函数签名即可知道该函数是在编译时评估的 编译器可能会发出更少的代码 因为constevalfns 在运行时从不使用 这是推测 我没有这方面的真实数据
  • 数据库中什么是半连接?

    我在尝试理解半连接的概念以及它与传统连接的不同之处时遇到了麻烦 我已经尝试过一些文章 但对解释不满意 有人可以帮助我理解它吗 简单的例子 让我们使用左外连接选择成绩的学生 SELECT DISTINCT s id FROM students
  • 如何使用回调函数在 TypeScript 中保留词法范围

    我有一个 TypeScript 类 其中有一个我打算用作回调的函数 removeRow this MyClass void this is now the window object I must use this to get the c
  • Windows Python (<=3.10.2) 无法运行 `python -m venv .venv`

    此问题已解决 并向 Python org 提交了错误报告 看看我的下面自我回答 https stackoverflow com a 71041562 4516027寻求解决方法 直到在未来版本的 Python 中修复为止 我的一台电脑被这个
  • LIBGDX 创建主菜单

    所以我想为我的游戏创建一个主菜单 但我不知道下一步该做什么 我已经完成了所有的艺术工作 并且全部分层并打包在 pack 中 public class MainMenu implements Screen CrazyZombies game
  • 使用比较器的意外输出

    我有以下程序 import java util public class Test public static void main String args Integer array 3 1 4 1 5 9 Arrays sort arra
  • MYSQLi真实转义函数显示换行符和回车符

    我有一个文本区域 当我尝试通过 MYSQLi 真实转义函数和 nl2br 进行转义和清理时 简单的输出给了我奇怪的结果 我的PHP代码 the odd输出是 i love this r n r nand this is gonna be f
  • Angularfire2,startAfter() 不适用于分页

    根据 firebase 文档 这是如何做到的 var first db collection cities orderBy population limit 25 return first get then function documen
  • 改进分配器算法实现的建议

    我有一个 Visual Studio 2008 C 应用程序 其中使用标准容器的自定义分配器 以便它们的内存来自内存映射文件而不是堆 该分配器用于 4 种不同的用例 104字节固定大小结构std vector lt SomeType MyA
  • python多处理中父进程全局变量如何复制到子进程

    乌班图20 04 我对python中不同子进程访问全局变量的理解是这样的 全局变量 假设b 可用于写时复制能力的每 个子进程 如果子进程修改了该变量 则复制b首先创建该副本 然后修改该副本 此更改对父进程不可见 稍后我将就这部分提出问题 我
  • 不明确的规则定义了“T...”的类型

    以下测试之一不起作用 为什么 public class SortedInterfacesTest private static final Logger log LoggerFactory getLogger SortedInterface
  • 在AWS EC2 Linux实例上安装Chrome时出错:未找到scaling_cur_freq和scaling_max_freq

    我正在尝试在 AWS EC2 实例上安装 Chrome 与 Chromedriver selenium 一起使用 但出现了以前从未见过的错误 我能够一致地重现 但在谷歌上找不到任何关于该怎么做的信息 重现步骤 启动新的 EC2 实例 Ama
  • 棘手的选择语句

    我有一个包含类别的表 每个类别都有一个 ID 一个名称和一个 ParentID 问题是有3个级别 父类别 子类别和子类别 我可以用一个简单的方法提取父类别SELECT and a WHERE ParentID IS NULL条款如下 SEL
  • 在 json 中找不到 json.net 必需的属性

    我正在使用 Json net 我得到了一个类如下 public class RecordAlias JsonProperty PropertyName eId Required Required Always public string E
  • 将 C++11 数组与 Cython 连接

    我习惯于构建 C 程序并在 Cython 中获取它 但在这里我试图获取 C 11array这绝对行不通 这是我的 pxd cdef extern from