2017-08-16 6 views
0

私はベクトルのイテレータを使用します。コンパイル時Cythonイテレータエラー

エラーが生成される:

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

私はあなたの問題を再現することができますが、ベクタとイテレータの代わりにおもちゃクラスを使った簡単なC++の例を作成しようとすると、同じエラーが発生しません。私はこれがあいまいなCythonのバグだと思って、https://github.com/cython/cython/issuesに報告してください。 (私には明らかな作業環境はありません) – DavidW

+0

あなたの例題を最小限に抑えることができます - 基本的に 'end-vect3.begin()'と適切な 'cdef'sです。バグは 'set_intersection'とは関係ありません – DavidW

+0

' iterator'は 'size_t'ではありません...基本的に異なるタイプです。 – TriskalJM

答えて

1

cythonバージョン0.26で動作します。