使用C++ vector时Cython出现bint干扰int类型的异常问题
Cython中vector[int]被错误转换为vector[bint]的异常问题
在Cython调用C++ vector类时出现异常行为:只要代码中声明了vector[bint]类型变量,后续的vector[int]类型变量会被错误地以bint类型处理,导致输出结果完全不符合预期。
正常代码示例
%%cython -a --cplus from libcpp.vector cimport vector print(<vector[int]>range(10))
预期输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
异常代码示例
%%cython -a --cplus from libcpp.vector cimport vector cdef vector[bint] foobar = [] print(<vector[int]>range(10))
实际输出:[0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
可以看到,除第一个元素外,所有大于0的int值都被转换成了bint类型的1,这明显不符合预期,推测这是Cython存在的一个bug。
内容的提问来源于stack exchange,提问作者Todd Sierens
相关产品推荐
相关产品推荐

