Cython 为我们提供了一种导入 C++ 标准库数据结构的简单方法,例如:
from libcpp.vector cimport vector
from libcpp.utility cimport pair
但是 C++11: 等引入的新容器std::unordered_map
呢std::unordered_set
?它们是否以相同的方式支持?我找不到合适的导入语句。
Cython 为我们提供了一种导入 C++ 标准库数据结构的简单方法,例如:
from libcpp.vector cimport vector
from libcpp.utility cimport pair
但是 C++11: 等引入的新容器std::unordered_map
呢std::unordered_set
?它们是否以相同的方式支持?我找不到合适的导入语句。
当前的 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 类一样。
Cython 默认不支持它们,但您可以按照https://github.com/cython/cython/blob/master/Cython/Includes/libcpp/map.pxd的结构创建自己的界面。
Cython 现在支持 unordered_map 和 unordered_set 从0.20.2 开始。
from libcpp.unordered_map cimport unordered_map
from libcpp.unordered_set cimport unordered_set