2017-08-16 1 views
0

J'utilise l'itérateur du vecteur.Erreur d'itérateur de Cython

Une erreur est produite lors de la compilation:

Cannot assign type 'iterator' to 'size_t'.

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 
+1

Je peux reproduire votre problème, mais lorsque j'essaie de construire un simple exemple C++ avec des classes jouets au lieu de vecteurs et d'itérateurs, je ne peux pas obtenir la même erreur. Je pense que c'est un bug Cython obscur et vous devriez le signaler à https://github.com/cython/cython/issues. (Je ne vois pas un workround évident) – DavidW

+0

Vous pouvez cependant minimiser votre exemple illustratif - Il s'agit simplement de 'end-vect3.begin()' et de 'cdef's appropriés. Le bug n'a rien à voir avec 'set_intersection' – DavidW

+0

Eh bien, un' iterator' n'est pas un 'size_t' ... Ils sont fondamentalement différents. – TriskalJM

Répondre

1

Il fonctionne avec la version de cython 0.26.