C++ Cython迭代器错误

C++ Cython迭代器错误,c++,vector,cython,C++,Vector,Cython,我使用向量的迭代器 编译时产生错误: 无法将类型“迭代器”分配给“大小” from libcpp.vector cimport vector def rotate_list(list ll): cdef vector[int] vect1 = ll cdef size_t t=0 t = vect1.end() - vect1.begin() return t 它使用Cython版本0.26。我可以重现你的问题,但是当我试图用一个简单的C++类例子

我使用向量的迭代器

编译时产生错误:

无法将类型“迭代器”分配给“大小”

from libcpp.vector cimport vector

def rotate_list(list ll):
    cdef vector[int] vect1 = ll     
    cdef size_t t=0

    t = vect1.end() - vect1.begin()
    return t

它使用Cython版本0.26。

我可以重现你的问题,但是当我试图用一个简单的C++类例子来代替玩具和向量,而不是向量和迭代器时,我就不能得到同样的错误。我认为这是一个晦涩难懂的Cython bug,你应该向我们报告。(我看不出一个明显的解决方法)不过,您可以最小化您的示例-基本上就是
end-vect3.begin()
和相应的
cdef
s。这个bug与
set\u intersection
无关,
iterator
不是
size\t
。。。它们是根本不同的类型。@TriskalJM如何在Cython上编写示例中的函数模拟?@TriskalJM但您应该能够将两个
向量迭代器相减以得到一个整数(Cython确实公开了该运算符,但由于某些原因它不起作用)