Cython为我们提供了一种简单的方法来导入C ++标准库数据结构,例如:
from libcpp.vector cimport vector
from libcpp.utility cimport pair
但是使用C ++ 11引入的新容器怎么样:std::unordered_map
,std::unordered_set
等。它们是否以相同的方式支持?我找不到合适的导入声明。
答案 0 :(得分:19)
目前的cython版本允许它们。
确保您的setup.py
包含以下内容:
ext_module = Extension(
"foo",
["foo.pyx"],
language="c++",
extra_compile_args=["-std=c++11"],
extra_link_args=["-std=c++11"]
)
然后您可以使用
from libcpp.unordered_map cimport unordered_map
与任何其他STL类一样。
答案 1 :(得分:0)
Cython默认不支持它们,但您可以按照https://github.com/cython/cython/blob/master/Cython/Includes/libcpp/map.pxd的结构创建自己的界面。
Cython现在支持自0.20.2以来的unordered_map和unordered_set。
from libcpp.unordered_map cimport unordered_map
from libcpp.unordered_set cimport unordered_set