python - Cython,关于 vector (大小)构造函数的混淆

标签 python c++ cython

编辑:仅供引用,对于遇到此问题的任何人,现在只需使用 pybind11,不要在这上面浪费时间(cython 的东西)

这似乎是定义 vector 的唯一方法变量是

cdef std::vector[int]* vec=new vector[int](<size>)

我这样想对吗?这是示例代码,如果我编译并运行此 Python 最后崩溃(VS2015,Python 3.5)。

from libcpp.vector cimport vector
def test():
    cdef vector[int]* vec = new vector[int](5)
    cdef int i
    for i in range(5):
        print(vec[i])

    del vec

我想要一个具有一定大小的二维 vector 。我该怎么做?会不会是:

cdef std::vector[std::vector[int]]* vec=new vector[vector[int](<size1>)](<size2>)

最佳答案

虽然官方的例子展示了如何在堆上创建这些东西,但出于某种原因,这并不是真正必要的。此代码构建:

from libcpp.vector cimport vector                                                                                                                                                                          


ctypedef vector[int] int_vec                                                        
ctypedef vector[int_vec] int_vec_vec                                                


def test():                                                                         
    cdef int_vec v                                                                  
    v = int_vec(5)                                                                  

    cdef int_vec_ve vv                                                              
    vv = int_vec_vec(5, v)   

它构建了一个 5X5 的 int vector vector 。

关于python - Cython,关于 vector (大小)构造函数的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832899/

相关文章:

python - 通过 python 将表名作为 postgres 中的参数传递

C++ 模板元编程 : overloading operators

python - 在不产生 python 开销的情况下在 Cython 中定义 NumPy 数组

Python "a=a-b"和 "a-=b"真的等价吗?

python - 在第 n 次出现后删除字符串的其余部分

python - 索引二维数组/列表

c++ - 从 C/C++ 解析简单的 MIME 文件?

c++ - 解析命令行参数时出现问题

python - 将 cython 函数传递给 cython 函数

python - 如何在 Cython 中将函数指针传递给外部程序